Ruby - Pegunungan
Rentang terjadi di mana-mana: Januari hingga Desember, 0 hingga 9, baris 50 hingga 67, dan seterusnya. Ruby mendukung range dan memungkinkan kita untuk menggunakan range dengan berbagai cara -
- Rentang sebagai Urutan
- Berkisar sebagai Kondisi
- Rentang sebagai Interval
Rentang sebagai Urutan
Penggunaan rentang yang pertama dan mungkin paling alami adalah untuk mengekspresikan urutan. Urutan memiliki titik awal, titik akhir, dan cara untuk menghasilkan nilai yang berurutan dalam urutan tersebut.
Ruby membuat urutan ini menggunakan ''..'' dan ''...''operator jangkauan. Bentuk dua titik membuat rentang inklusif, sedangkan bentuk tiga titik membuat rentang yang mengecualikan nilai tinggi yang ditentukan.
(1..5) #==> 1, 2, 3, 4, 5
(1...5) #==> 1, 2, 3, 4
('a'..'d') #==> 'a', 'b', 'c', 'd'
Urutan 1..100 diadakan sebagai objek Range yang berisi referensi ke dua objek Fixnum . Jika perlu, Anda dapat mengonversi rentang menjadi daftar menggunakan metode to_a . Coba contoh berikut -
#!/usr/bin/ruby
$, =", " # Array value separator
range1 = (1..10).to_a
range2 = ('bar'..'bat').to_a
puts "#{range1}"
puts "#{range2}"
Ini akan menghasilkan hasil sebagai berikut -
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
["bar", "bas", "bat"]
Rentang menerapkan metode yang memungkinkan Anda mengulanginya dan menguji isinya dengan berbagai cara -
#!/usr/bin/ruby
# Assume a range
digits = 0..9
puts digits.include?(5)
ret = digits.min
puts "Min value is #{ret}"
ret = digits.max
puts "Max value is #{ret}"
ret = digits.reject {|i| i < 5 }
puts "Rejected values are #{ret}"
digits.each do |digit|
puts "In Loop #{digit}"
end
Ini akan menghasilkan hasil sebagai berikut -
true
Min value is 0
Max value is 9
Rejected values are 5, 6, 7, 8, 9
In Loop 0
In Loop 1
In Loop 2
In Loop 3
In Loop 4
In Loop 5
In Loop 6
In Loop 7
In Loop 8
In Loop 9
Berkisar sebagai Kondisi
Rentang juga dapat digunakan sebagai ekspresi bersyarat. Misalnya, fragmen kode berikut mencetak kumpulan baris dari input standar, di mana baris pertama di setiap set berisi kata awal dan baris terakhir kata berakhir -
while gets
print if /start/../end/
end
Rentang dapat digunakan dalam pernyataan kasus -
#!/usr/bin/ruby
score = 70
result = case score
when 0..40 then "Fail"
when 41..60 then "Pass"
when 61..70 then "Pass with Merit"
when 71..100 then "Pass with Distinction"
else "Invalid Score"
end
puts result
Ini akan menghasilkan hasil sebagai berikut -
Pass with Merit
Rentang sebagai Interval
Kegunaan akhir dari rentang serbaguna adalah sebagai tes interval: melihat apakah beberapa nilai berada dalam interval yang diwakili oleh rentang tersebut. Ini dilakukan dengan menggunakan ===, operator persamaan kasus.
#!/usr/bin/ruby
if ((1..10) === 5)
puts "5 lies in (1..10)"
end
if (('a'..'j') === 'c')
puts "c lies in ('a'..'j')"
end
if (('a'..'j') === 'z')
puts "z lies in ('a'..'j')"
end
Ini akan menghasilkan hasil sebagai berikut -
5 lies in (1..10)
c lies in ('a'..'j')