Ruby Range (Plage)
Gamme (Range) est partout: a à z, 0 à 9, et ainsi de suite. Ruby gamme de support, et nous permet d'utiliser une gamme de différentes façons:
- Comme la plage de la séquence
- Comme la gamme de conditions
- Comme la plage de l'intervalle
Comme la plage de la séquence
La première et la plus courante utilisation de la gamme est exprimée séquences. Séquence a un point de départ et un point dans une séquence pour produire une valeur continue d'extrémité.
Ruby utilise'' .. '' et '' ... ''opérateur de plage pour créer ces séquences. Créer deux heures sous la forme d'une plage contenant la valeur la plus élevée de la gamme à trois points spécifiés pour créer une forme qui ne contient 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'
1..100 séquence est un objetRangecontenant deux objetsFixnum.Si nécessaire, vous pouvez utiliser la méthode deto_aplage dans une liste. Essayez les exemples suivants:
#!/usr/bin/ruby $, =", " # Array 值分隔符 range1 = (1..10).to_a range2 = ('bar'..'bat').to_a puts "#{range1}" puts "#{range2}"
Exécutez l'exemple ci-dessus est sortie:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ["bar", "bas", "bat"]
Alors que vous pouvez obtenir une gamme de parcourir leurs méthodes, vous pouvez vérifier leur contenu de plusieurs façons:
#!/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
Exécutez l'exemple ci-dessus est sortie:
true 最小值为 0 最大值为 9 不符合条件的有 [5, 6, 7, 8, 9] 在循环中 0 在循环中 1 在循环中 2 在循环中 3 在循环中 4 在循环中 5 在循环中 6 在循环中 7 在循环中 8 在循环中 9
Comme la gamme de conditions
Ranges également être utilisé comme une expression conditionnelle. Par exemple, le fragment de code imprimé suivant de la ligne d'entrée standard, dans lequel chacune des premières lignes de la collection contient le motdébut,la dernière ligne contient le motfin .:
while gets print if /start/../end/ end
La portée peut être utilisé dans la déclaration de cas:
#!/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
Exécutez l'exemple ci-dessus est sortie:
及格分数
Comme la plage de l'intervalle
Enfin, une détection d'intervalle l'utilisation du motif: Vérifiez la valeur spécifiée est dans la plage spécifiée. === Vous devez utiliser l'opérateur d'égalité pour effectuer 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
Exécutez l'exemple ci-dessus est sortie:
5 在 (1..10) c 在 ('a'..'j')