在ruby中,我们可以通过很多方式轻松生成1到n个数字,例如
1.upto(10).to_a
[*1..10]
但我想找出给定数字中的下n个数字。例如,如果给定的数字是250,那么找到接下来的20个数字(250..270)的最简单方法是什么?
一种方法是:
n.upto(n+next),
所以
250.upto(250+20) or [*250..(250+20)]
我只是想知道是否有默认的ruby方法/方法来处理这个问题。
答案 0 :(得分:2)
您还可以对范围使用延迟评估,并执行类似
的操作250.upto(1.0/0).take(20)
答案 1 :(得分:1)
我认为Ruby中没有内置内容,但是如何编写自己的方法:
class Integer
def next_with_step(step = nil)
if step.is_a?(Fixnum)
upto(self + step).to_a
else
next_without_step
end
end
alias_method :next_without_step, :next
alias_method :next, :next_with_step
end
1.next
=> 2
1.next(3).inspect
=> [1, 2, 3, 4]
答案 2 :(得分:0)
以下是如何完成此任务的示例:
n = 250
m = 5
puts (0...m).map{ |i| i + n }.inspect #=> [250, 251, 252, 253, 254]