Banjaran Ruby


Julat ada di mana-mana: a hingga z, 0 hingga 9, dsb. Ruby menyokong julat dan membenarkan kami menggunakan julat dengan cara yang berbeza:

  • Julat sebagai jujukan

  • Julat sebagai syarat

  • Julat sebagai selang

Julat sebagai jujukan

Penggunaan julat pertama dan paling biasa ialah untuk menyatakan jujukan . Urutan mempunyai titik mula, titik akhir, dan cara untuk menghasilkan nilai berturut-turut dalam jujukan.

Ruby mencipta jujukan ini menggunakan operator julat ''..'' dan ''...''. Borang dua mata mencipta julat yang merangkumi nilai tertinggi yang ditentukan, dan borang tiga mata mencipta julat yang tidak termasuk nilai tertinggi yang ditentukan. Urutan

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

1..100 ialah objek Julat yang mengandungi rujukan kepada dua objek Fixnum. Jika perlu, anda boleh menggunakan kaedah ke_a untuk menukar julat kepada senarai. Cuba contoh berikut:

#!/usr/bin/ruby

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

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


Keluaran contoh di atas ialah:

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

Julat melaksanakan kaedah yang membolehkan anda melintasinya Anda boleh melepasi berbilang Terdapat tiga cara untuk menyemak kandungannya:

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


Hasil keluaran contoh di atas ialah:

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

Julat sebagai syarat

julat juga boleh digunakan Digunakan sebagai ungkapan bersyarat. Sebagai contoh, coretan kod berikut mencetak baris daripada input standard di mana baris pertama setiap set mengandungi perkataan mula dan baris terakhir mengandungi perkataan tamat.:

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

Julat boleh digunakan dalam pernyataan kes:

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


Hasil keluaran contoh di atas ialah:

及格分数

sebagai julat selang

julat Penggunaan terakhir ialah pengesanan selang: menyemak sama ada nilai yang ditentukan berada dalam julat yang ditentukan. Operator kesamaan === diperlukan untuk melengkapkan pengiraan.

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


Hasil keluaran contoh di atas ialah:

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