Ruby的Range类

Range 是ruby范围对象的类。范围对象是由范围操作符 ..或… 生成的。

.. 生成的范围对象包括终点值。

… 生成的范围对象不包括终点值。

1
2
1..3  # 表示 1、2、3
1...3 # 表示 1、2

Range的实例在内存中只存储了起点和终点,因此比数组更节省空间。

Range 的常用方法:

1.通过 to_a 方法可以将Range对象转换成数组:

1
2
('a'..'c').to_a   =>  ["a", "b", "c"]
(1..3).to_a       =>  [1, 2, 3]

2.迭代Range

1
(1..3).each{ |i| puts i } #依次输出 1、2、3

3.include?

1
('a'..'c').include?('b')

4.end 返回范围终点,与是否包含范围终点无关:

1
2
('a'..'c').end    => "c"
('a'...'c').end   => "c"

5.step(s) 以步长s进行迭代:

1
(1..10).step(2) {|v| p v}     =>  1, 3, 5, 7, 9

6.min 最小值

1
(1..10).min    => 1

7.max 最大值

1
(1..10).max    => 10

Comments