Ruby Range

Les plages sont partout : de a à z, de 0 à 9, etc. Ruby prend en charge les plages et nous permet de les utiliser de différentes manières :

  • Plages en tant que séquences
  • Plages en tant que conditions
  • Plages en tant qu'intervalles

Plages en tant que séquences

Le premier usage des plages, et le plus courant, est d'exprimer des séquences. Les séquences ont un point de départ, un point de fin et un moyen de produire les valeurs successives de la séquence.

Ruby utilise''..''et''...''les opérateurs de plage pour créer ces séquences. La forme à deux points crée une plage qui inclut la valeur maximale spécifiée, et la forme à trois points crée une plage qui n'inclut pas la valeur maximale spécifiée.

(1..5) #==> 1, 2, 3, 4, 5 (1...5) #==> 1, 2, 3, 4 ('a'..'d') #==> 'a', 'b', 'c', 'd'

La séquence 1..100 est un objetRangequi contient deux référencesFixnumà des objets. Si nécessaire, vous pouvez utiliserto_améthode pour convertir la plage en liste. Essayez l'exemple suivant :

Exemple

#!/usr/bin/ruby $, =", " #Séparateur de valeurs de tableau range1 = (1..10).to_a range2 = ('bar'..'bat').to_a puts "#{range1}" puts "#{range2}"

Essayez-le »

La sortie de l'exemple ci-dessus est :

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
["bar", "bas", "bat"]

Les intervalles implémentent des méthodes qui vous permettent de les parcourir et de vérifier leur contenu de différentes manières :

Exemple

#!/usr/bin/ruby # -*- coding: UTF-8 -*- #Intervalle spécifié digits = 0..9 puts digits.include?(5) ret = digits.min puts "La valeur minimale est #{ret}" ret = digits.max puts "La valeur maximale est #{ret}" ret = digits.reject {|i| i < 5 } puts "Ceux qui ne remplissent pas la condition sont #{ret}" digits.each do |digit| puts "Dans la boucle #{digit}" end

Essayez-le »

L'exécution de l'exemple ci-dessus produit :

true
最小值为 0
最大值为 9
不符合条件的有 [5, 6, 7, 8, 9]
在循环中 0
在循环中 1
在循环中 2
在循环中 3
在循环中 4
在循环中 5
在循环中 6
在循环中 7
在循环中 8
在循环中 9

Plages en tant que conditions

Les intervalles peuvent également être utilisés comme expressions conditionnelles. Par exemple, l'extrait de code suivant affiche les lignes de l'entrée standard, où la première ligne de chaque ensemble contient le motstart, et la dernière ligne contient le motend.:

while gets print if /start/../end/ end

Les intervalles peuvent être utilisés dans les instructions case :

Exemple

#!/usr/bin/ruby # -*- coding: UTF-8 -*- score = 70 result = case score when 0..40 "Poor score" when 41..60 "Almost passing" when 61..70 "Passing score" when 71..100 "Good score" else "Invalid score" end puts result

Essayez-le »

L'exemple ci-dessus produit :

Passing score

Plages en tant qu'intervalles

La dernière utilisation des intervalles est la détection d'intervalle : vérifier si une valeur spécifiée se trouve dans un intervalle spécifié. Cela nécessite l'opérateur d'égalité === pour effectuer le calcul.

Exemple

#!/usr/bin/ruby # -*- coding: UTF-8 -*- if ((1..10) === 5) puts "5 in (1..10)" end if (('a'..'j') === 'c') puts "c in ('a'..'j')" end if (('a'..'j') === 'z') puts "z in ('a'..'j')" end

Essayez-le »

L'exemple ci-dessus produit :

5 在 (1..10)
c 在 ('a'..'j')
Autres extensions