Gamme Rubis
Les plages sont partout : de a à z, de 0 à 9, etc. Ruby prend en charge les plages et nous permet d'utiliser les plages de différentes manières :
Plage sous forme de séquence
Plage sous forme de condition
Plage sous forme d'intervalle
Plage sous forme de séquence
La première et la plus courante utilisation de la plage est d'exprimer des séquences. Une séquence a un point de départ, un point final et un moyen de produire des valeurs consécutives dans la séquence.
Ruby crée ces séquences en utilisant les opérateurs de plage ''..'' et ''...''. Le formulaire en deux points crée une plage qui inclut la valeur la plus élevée spécifiée, tandis que le formulaire en trois points crée une plage qui n'inclut pas la valeur la plus élevée spécifiée. La séquence
(1..5) #==> 1, 2, 3, 4, 5 (1...5) #==> 1, 2, 3, 4 ('a'..'d') #==> 'a', 'b', 'c', 'd'
1..100 est un objet Range qui contient des références à deux objets Fixnum. Si nécessaire, vous pouvez utiliser la méthode to_a pour convertir une plage en liste. Essayez l'exemple suivant :
#!/usr/bin/ruby $, =", " # Array 值分隔符 range1 = (1..10).to_a range2 = ('bar'..'bat').to_a puts "#{range1}" puts "#{range2}"
Le résultat de l'exemple ci-dessus est :
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ["bar", "bas", "bat"]
Les plages implémentent des méthodes qui vous permettent de les parcourir. Vous pouvez en transmettre plusieurs. Il existe trois façons de vérifier leur contenu :
#!/usr/bin/ruby # -*- coding: UTF-8 -*- # 指定范围 digits = 0..9 puts digits.include?(5) ret = digits.min puts "最小值为 #{ret}" ret = digits.max puts "最大值为 #{ret}" ret = digits.reject {|i| i < 5 } puts "不符合条件的有 #{ret}" digits.each do |digit| puts "在循环中 #{digit}" end
Le résultat de sortie de l'exemple ci-dessus est :
true 最小值为 0 最大值为 9 不符合条件的有 [5, 6, 7, 8, 9] 在循环中 0 在循环中 1 在循环中 2 在循环中 3 在循环中 4 在循环中 5 在循环中 6 在循环中 7 在循环中 8 在循环中 9
La plage comme condition
range peut également être utilisé Utilisé comme expression conditionnelle. Par exemple, l'extrait de code suivant imprime les lignes de l'entrée standard où la première ligne de chaque ensemble contient le mot start et la dernière ligne contient le mot end.:
while gets print if /start/../end/ end
La plage peut être utilisée dans les instructions case :
#!/usr/bin/ruby # -*- coding: UTF-8 -*- score = 70 result = case score when 0..40 "糟糕的分数" when 41..60 "快要及格" when 61..70 "及格分数" when 71..100 "良好分数" else "错误的分数" end puts result
Le résultat de sortie de l'exemple ci-dessus est :
及格分数
comme plage de l'intervalle
plage L'utilisation finale est la détection d'intervalle : vérifier si une valeur spécifiée se trouve dans une plage spécifiée. L’opérateur d’égalité === est requis pour terminer le calcul.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- if ((1..10) === 5) puts "5 在 (1..10)" end if (('a'..'j') === 'c') puts "c 在 ('a'..'j')" end if (('a'..'j') === 'z') puts "z 在 ('a'..'j')" end
Le résultat de sortie de l'exemple ci-dessus est :
5 在 (1..10) c 在 ('a'..'j')