Latest web development tutorials

Ruby Range (Range)

Range (kisaran) di mana-mana: a sampai z, 0 sampai 9, dan sebagainya. Ruby dukungan jangkauan, dan memungkinkan kita untuk menggunakan berbagai cara yang berbeda:

  • Sebagai kisaran urutan
  • Sebagai kisaran kondisi
  • Sebagai rentang interval

Sebagai kisaran urutan

Penggunaan pertama dan paling umum dari kisaran dinyatakan urutan. Urutan memiliki titik awal dan titik akhir dalam urutan untuk menghasilkan nilai yang berkesinambungan.

Ruby menggunakan'' .. '' dan '' ... ''Operator kisaran untuk membuat urutan ini. Dua bentuk menciptakan berbagai yang berisi nilai tertinggi dari kisaran tiga titik yang ditentukan untuk membuat bentuk yang tidak mengandung nilai maksimum yang ditentukan.

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

1..100 urutan objekRentangmengandung dua objekFixnum.Jika perlu, Anda dapat menggunakan metode ini untuk berbagaito_ake dalam daftar. Coba contoh berikut:

#!/usr/bin/ruby

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

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

Jalankan contoh di atas output:

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

Sehingga Anda dapat mencapai berbagai melintasi metode mereka, Anda dapat memeriksa isinya dalam beberapa cara:

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

Jalankan contoh di atas output:

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

Sebagai kisaran kondisi

Ranges juga dapat digunakan sebagai ekspresi kondisional. Sebagai contoh, berikut kode fragmen cetak dari garis standar input, dimana masing-masing baris pertama dari koleksi berisi katastart,baris terakhir berisiakhirkata.:

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

Kisaran dapat digunakan dalam kasus pernyataan:

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

Jalankan contoh di atas output:

及格分数

Sebagai rentang interval

Akhirnya, penggunaan pola Interval deteksi: Periksa nilai yang ditentukan adalah dalam kisaran tertentu. === Anda perlu menggunakan operator kesetaraan untuk menyelesaikan perhitungan.

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

Jalankan contoh di atas output:

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