English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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
作为间隔的范围
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
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')