Latest web development tutorials

Ruby Range (Bereich)

Range (Range) ist überall: a bis z, 0 bis 9, und so weiter. Ruby-Unterstützung Bereich und ermöglicht es uns, eine Reihe von verschiedenen Möglichkeiten zu nutzen:

  • Da der Bereich der Sequenz
  • Da der Bereich der Bedingungen
  • Da der Bereich des Intervalls

Da der Bereich der Sequenz

Die erste und häufigste Verwendung des Bereichs wird Sequenzen exprimiert. Sequenz hat einen Startpunkt und einen Endpunkt in einer Folge einen kontinuierlichen Wert zu erzeugen.

Rubin verwendet'' .. '' und '' ... ''Bereichsoperator diese Sequenzen zu erstellen. Zwei Formen schaffen einen Bereich, der den höchsten Wert der angegebenen Dreipunktbereich enthält ein Formular zu erstellen, die nicht auf die angegebene enthält Maximalwert.

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

1..100 Sequenz ist einRange- Objekt , das zweiFixnum- Objekt. Bei Bedarf können Sie die Methodeto_aBereich in eine Liste verwenden. Versuchen Sie, die folgenden Beispiele:

#!/usr/bin/ruby

$, =", "   # Array 值分隔符
range1 = (1..10).to_a
range2 = ('bar'..'bat').to_a

puts "#{range1}"
puts "#{range2}"

Führen Sie das obige Beispiel Ausgabe lautet:

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

Damit Sie eine Reihe von durchqueren ihre Methoden erreichen können, können Sie deren Inhalte auf verschiedene Weise prüfen:

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

Führen Sie das obige Beispiel Ausgabe lautet:

true
最小值为 0
最大值为 9
不符合条件的有 [5, 6, 7, 8, 9]
在循环中 0
在循环中 1
在循环中 2
在循环中 3
在循环中 4
在循环中 5
在循环中 6
在循环中 7
在循环中 8
在循环中 9

Da der Bereich der Bedingungen

Bereiche auch als Bedingungsausdruck verwendet werden. Zum Beispiel Linie das folgende Codefragment Druck von der Standardeingabe, bei der jede der ersten Reihen der Sammlung das WortStart enthält,enthält die letzte Zeile das WortEnde .:

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

Die Reichweite kann bei Anweisung verwendet werden:

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

Führen Sie das obige Beispiel Ausgabe lautet:

及格分数

Da der Bereich des Intervalls

Schließlich wird ein Verwendungsmuster Intervall Erkennung: Überprüfen der angegebene Wert innerhalb des angegebenen Bereichs liegt. === Sie müssen den Gleichheitsoperator verwenden, um die Berechnung abzuschließen.

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

Führen Sie das obige Beispiel Ausgabe lautet:

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