我正在阅读一本书,其中给出了使用“to_a”方法将范围转换为等效数组的示例
当我在irb中运行代码时,我得到以下警告
warning: default `to_a' will be obsolete
使用to_a的正确替代方法是什么?
是否有其他方法来填充一个Range数组?
我正在阅读一本书,其中给出了使用“to_a”方法将范围转换为等效数组的示例
当我在irb中运行代码时,我得到以下警告
warning: default `to_a' will be obsolete
使用to_a的正确替代方法是什么?
是否有其他方法来填充一个Range数组?
这适用于我在irb:
irb> (1..4).to_a
=> [1, 2, 3, 4]
我注意到:
irb> 1..4.to_a
(irb):1: warning: default `to_a' will be obsolete
ArgumentError: bad value for range
from (irb):1
所以你可能忽略了括号?
(我运行的是Ruby 1.8.6 patchlevel 114)
你可以用splat创建一个有范围的数组,
>> a=*(1..10)
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
使用内核数组方法,
Array (1..10)
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
或者使用to_a
(1..10).to_a
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
我只是试着使用从大到小的范围,得到了我没有预料到的结果:
irb(main):007:0> Array(1..5)
=> [1, 2, 3, 4, 5]
irb(main):008:0> Array(5..1)
=> []
这是因为range的实现。 所以我不得不使用以下选项:
(1..5).to_a.reverse