📜  Ruby-范围(1)

📅  最后修改于: 2023-12-03 15:19:52.691000             🧑  作者: Mango

Ruby - 范围

Ruby 中的范围(Range)表示一组连续的值。范围是在两个端点之间的所有值的集合,这两个端点可以是整数、字符或日期等。在本文中,我们将深入探讨 Ruby 中的范围。

创建范围

在 Ruby 中创建范围的最基本方法是使用两个点(..)和三个点(...)构造范围运算符。两个点表示一个闭合范围,而三个点表示一个开放范围。

(1..5)    #=> 1, 2, 3, 4, 5
(1...5)   #=> 1, 2, 3, 4

还可以使用 Range.new 实例化范围类。

r = Range.new(1, 5)      #=> 1..5
r = Range.new(1, 5, true)    #=> 1...5
范围的操作

范围既可以作为条件进行比较,也可以作为迭代器,循环遍历其中的数值。

包含

使用 include? 方法检查一个值是否包含在范围内。

(1..5).include?(3)      #=> true
(1..5).include?(6)      #=> false
循环迭代

可以使用 each 方法循环迭代范围内的元素。

(10..20).each do |n|
  print n, ' '
end
#=> 10 11 12 13 14 15 16 17 18 19 20
逐一获取元素

使用 step 方法按照指定的步长逐一获取范围内的元素。

(10..20).step(2) do |n|
  print n, ' '
end
#=> 10 12 14 16 18 20
转换成数组

使用 to_a 方法将范围转换成数组。

(1..5).to_a        #=> [1, 2, 3, 4, 5]
范围比较

范围可以通过 <=> 进行比较。

(1..5) <=> (1..10)   #=> -1
(1..10) <=> (1..5)   #=> 1
(1..10) <=> (1..10)  #=> 0
实用技巧
倒序排列

可以通过将范围转换成数组,再调用 reverse 方法,实现倒序排列。不过要注意 reverse 方法会改变原数组。

(1..5).to_a.reverse        #=> [5, 4, 3, 2, 1]
Range#===

Range 还重载了 ===,可以作为 case when 分支的比较值。

case 'hello'
when /he/
  puts 'contains "he"'
end

case 3
when 1..5
  puts 'between 1 and 5'
end
结论

有了本文的介绍,相信您已经了解了 Ruby 中范围的基本操作。范围在 Ruby 中非常实用,可以用来表示一组连续的值,可以作为条件进行比较,也可以作为迭代器,循环遍历其中的数值。