Вопрос

Если вы видели мои предыдущие вопросы, вы уже знаете, что я большой нобик, когда речь идет о Руби. Итак, я обнаружил этот веб-сайт, который предназначен для программирования 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top