English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

范围(Range)Ruby

L'intervallo (Range) è onnipresente: da a a z, da 0 a 9, ecc. Ruby supporta gli intervalli e ci permette di utilizzarli in modi diversi:

  • Come intervallo di sequenza

  • intervallo come condizione

  • 作为间隔的范围

Come intervallo di sequenza

L'uso più comune e primario della gamma è esprimere sequenze. Una sequenza ha un punto di partenza, un punto di arrivo e un modo per generare valori consecutivi.

Ruby utilizza ''..'' e ''...'' L'operatore di range crea queste sequenze. La forma a due punti crea un intervallo che include il valore massimo specificato, mentre la forma a tre punti crea un intervallo che non include il valore massimo specificato.

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

La sequenza 1..100 è un Range oggetto, che contiene due Fixnum Il riferimento agli oggetti. Se necessario, puoi usare to_a I metodi trasformano l'intervallo in una lista. Prova il seguente esempio:

示例在线

#!/usr/bin/ruby
 
$, = ", " # Separatore di valori array
range1 = (1..10).to_a
range2 = ('bar'..'bat').to_a
 
stampare "#{range1}"
stampare "#{range2}"

以上示例运行输出结果为:

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

L'intervallo implementa metodi che ti permettono di iterare su di essi: puoi verificare il loro contenuto in molti modi:

示例在线

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
 
# Specificare l'intervallo
digits = 0..9
 
stampare digits.include?(5)
ret = digits.min
stampare "Il valore minimo è #{ret}"
 
ret = digits.max
stampare "Il valore massimo è #{ret}"
 
ret = digits.reject { |i| i < 5 }
stampare "Non soddisfa i requisiti sono #{ret}"
 
digits.each do |digit|
   stampare "nel ciclo #{digit}"
end

以上示例运行输出结果为:

true
Il valore minimo è 0
Il valore massimo è 9
Non soddisfa i requisiti sono [5, 6, 7, 8, 9]
nel ciclo 0
nel ciclo 1
nel ciclo 2
nel ciclo 3
nel ciclo 4
nel ciclo 5
nel ciclo 6
nel ciclo 7
nel ciclo 8
nel ciclo 9

intervallo come condizione

L'intervallo può anche essere utilizzato come espressione condizionale. Ad esempio, il seguente frammento di codice stampa righe dallo standard input, dove la prima riga di ogni insieme contiene la parola start,最后一行包含单词 fine.:

while gets
   stampare se /start/../end/
end

L'intervallo può essere utilizzato nelle istruzioni caso:

示例在线

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
 
score = 70
 
result = caso score
quando 0..40
    "糟糕的分数"
quando 41..60
    "差不多及格"
when 61..70
    "分数及格"
when 71..100
       "良好的分数"
else
    "错误的分数"
end
 
puts result

以上示例运行输出结果为:

分数及格

作为间隔的范围

最后一个用途范围是间隔检测:检查指定值是否在指定的范围内。需要使用 === 相等运算符来完成计算。

示例在线

#!/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

以上示例运行输出结果为:

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