Ruby简单的方法列出下n个数字

时间:2011-07-26 08:57:49

标签: ruby jruby

在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方法/方法来处理这个问题。

3 个答案:

答案 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]