Latest web development tutorials

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