Руби простой способ перечислить следующие n чисел - PullRequest
2 голосов
/ 26 июля 2011

В 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)]

Я просто хотел узнать, существует ли метод / способ по умолчанию для этого.

Ответы [ 3 ]

2 голосов
/ 26 июля 2011

Вы также можете использовать ленивую оценку диапазонов и делать что-то вроде

250.upto(1.0/0).take(20)
1 голос
/ 26 июля 2011

Не думаю, что в 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]
0 голосов
/ 26 июля 2011

Вот пример того, как вы могли бы сделать это:

n = 250
m = 5

puts (0...m).map{ |i| i + n }.inspect #=> [250, 251, 252, 253, 254]
...