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')