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')