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