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

Ruby-Bereich (Range)

Bereich (Range) ist überall: a bis z, 0 bis 9、等等。Ruby unterstützt Bereiche und ermöglicht es uns, Bereiche auf verschiedene Weise zu verwenden:

  • als Sequenzbereich

  • als Bedingung verwendeter Bereich

  • Als Intervallbereich

als Sequenzbereich

Der erste und häufigste Verwendungszweck des Bereichs ist die Ausdrucksform von Sequenzen. Eine Sequenz hat einen Anfang, ein Ende und eine Art, wie die kontinuierlichen Werte der Sequenz erzeugt werden.

Ruby verwendet ''..'' und ''...'' Bereichsoperatoren erstellen diese Reihen. Das Zweipunktsymbol erstellt einen Bereich, der den angegebenen höchsten Wert enthält, und das Dreipunktsymbol erstellt einen Bereich, der den angegebenen höchsten Wert nicht enthält.

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

Reihe 1..100 ist eine Bereich Objekt, das zwei Fixnum Objektbezug. Wenn erforderlich, können Sie to_a Methoden konvertieren Bereiche in Listen. Versuchen Sie den folgenden Beispiel:

Online-Beispiel

#!/usr/bin/ruby
 
$, =", "   # Array-Wert-Trennzeichen
range1 =1..10).to_a
range2 = ('bar'..'bat').to_a
 
puts "#{range1"
puts "#{range2"

Die Ergebnisse der obigen Beispiel-Ausführung lauten:

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

Bereich implementiert Methoden, die es Ihnen ermöglichen, ihre Inhalte auf verschiedene Weise zu überprüfen:

Online-Beispiel

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
 
# Definition des Bereichs
digits = 0..9
 
puts digits.include?(5)
ret = digits.min
puts "Der kleinste Wert ist #{ret}"
 
ret = digits.max
puts "Der größte Wert ist #{ret}"
 
ret = digits.reject { |i| i < 5 }
puts "Diejenigen, die die Bedingung nicht erfüllen, sind #{ret}"
 
digits.each do |digit|
   puts "im Zyklus #{digit}"
end

Die Ergebnisse der obigen Beispiel-Ausführung lauten:

true
Der kleinste Wert ist 0
Der größte Wert ist 9
Diejenigen, die die Bedingung nicht erfüllen, sind [5, 6, 7, 8, 9]
im Zyklus 0
im Zyklus 1
im Zyklus 2
im Zyklus 3
im Zyklus 4
im Zyklus 5
im Zyklus 6
im Zyklus 7
im Zyklus 8
im Zyklus 9

als Bedingung verwendeter Bereich

Bereich kann auch als bedingte Ausdrucksform verwendet werden. Zum Beispiel, der folgende Codeabschnitt druckt Zeilen vom Standard-Eingabe, wobei die erste Zeile jeder Sammlung den Wort start,最后一行包含单词 end.:

while gets
   print if /start/../end/
end

Bereich kann in case-Anweisungen verwendet werden:

Online-Beispiel

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
 
score = 70
 
result = case score
when 0..40
    "Schlechte Note"
when 41..60
    "Fast bestanden"
when 61..70
    "Bestehensnote"
when 71..100
       "Gute Note"
else
    "Falsche Note"
end
 
puts result

Die Ergebnisse der obigen Beispiel-Ausführung lauten:

Bestehensnote

Als Intervallbereich

Der letzte Verwendungszweck des Bereichs ist die Intervallprüfung: Überprüfen Sie, ob der angegebene Wert im angegebenen Bereich liegt. Um die Berechnung durchzuführen, ist der Gleichheitsoperator === erforderlich.

Online-Beispiel

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
 
if ((1..10) ==== 5)
  puts ""5 in (1..10)"
end
 
if (('a'..'j') === 'c')
  puts "c in ('a'..'j')"
end
 
if (('a'..'j') === 'z')
  puts "z in ('a'..'j')"
end

Die Ergebnisse der obigen Beispiel-Ausführung lauten:

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