2010-04-14 5 views
2

Если вы видели мои предыдущие вопросы, вы уже знаете, что я очень большой, когда дело доходит до Ruby. Итак, я открыл этот сайт, который предназначен для программирования на C, но я думал, что все, что можно сделать на C, должно быть возможным в Ruby (и более читаемом).Ruby: counters, counting и incrementing

Задача состоит в том, чтобы распечатать кучу цифр. Я обнаружил этот отличный метод .upto(), и я использовал блок (и фактически понял его цель). Однако в 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: S Должен ли я сделать это иначе? Я ожидаю получить такой результат:

1 2 3 4 5 6 7 8 9 10 

Благодарим за ответы, комментарии и комментарии!

+0

Почему бы вам не попробовать веб-сайт, который предназначен для Ruby? – OscarRyz

+2

Почему Оскар Рейес не прекращает публикацию? –

+0

Этот сайт довольно хорош, и я могу читать C-код, пока он не становится достаточно сумасшедшим. Кроме того, он выглядел довольно ретро. – Shyam

ответ

2

Я понятия не имею, где => 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" 
3

«=> 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 
+0

Большое вам спасибо! – Shyam

+0

@jeremy: Фактически print '=> nil', который является результатом выполнения:' print '\ n "' Я обдумал ваш ответ, чтобы отразить это. – OscarRyz

+0

Добро пожаловать @ Шьям, и спасибо @Oscar ... очевидно, я на самом деле не проверял: P –