Ruby: счетчики, считая и увеличение
Вопрос
Если вы видели мои предыдущие вопросы, вы уже знаете, что я большой нобик, когда речь идет о Руби. Итак, я обнаружил этот веб-сайт, который предназначен для программирования C, но я думал, что можно сделать в C, должно быть возможно в Ruby (и более читаемо).
Задача состоит в том, чтобы распечатать кучу чисел. Я обнаружил этот изящный метод .ют (), и я использовал блок (и на самом деле понимаю его цель). Однако в IRB я получил неожиданное поведение.
class MyCounter
def run
1.upto(10) { |x| print x.to_s + " " }
end
end
irb(main):033:0> q = MyCounter.new
=> #<MyCounter:0x5dca0>
irb(main):034:0> q.run
1 2 3 4 5 6 7 8 9 10 => 1
Я понятия не имею, где происходит => 1, если я должен сделать это иначе? Я ожидаю получить этот результат:
1 2 3 4 5 6 7 8 9 10
Спасибо за ваши ответы, комментарии и отзывы!
Решение
Я понятия не имею, где приходит => 1
Не волнуйся. По умолчанию irb
Распечатывает возвращаемое значение выполнения метода.
Даже если вы не пишете return
Заявление (например, в C) Ruby возвращает значение последнего вычисленного оператора.
В этом случае это было 1
Это все.
Например, попробуйте:
class WhereIsTheReturn
def uh?
14 * 3 # no return keyword
end
end
whereIsIt = WhereIsTheReturn.new
hereItIs = whereIsIt.uh?
print "Here it is : #{hereItIs}\n"
Другие советы
«=> 1» от IRB, а не ваш код. После каждого оператора вы введете IRB, он печатает результат этого оператора после подсказки «=>».
Попробуйте печать новой строки в вашей функции:
def run
1.upto(10) { |x| print x.to_s + " " }
print "\n"
end
Тогда это будет выглядеть так:
irb> q.run
1 2 3 4 5 6 7 8 9 10
=> nil