2013-02-07 36 views
6

我知道這可能看起來像一個非常簡單的問題,但它真的讓我困擾,我的提示繼續生成「=>零」,我搜索了一個答案但找不到一個答案。謝謝。爲什麼我所有的投入都返回=>零?

放 '眨眼' * 4 閃爍閃爍閃爍閃爍 =>零

回答

8

因爲這是puts返回值:

放(OBJ, ...)→無

寫入給定對象與IO#打印一樣。 在任何不是 已經以換行符序列結束之後寫入一個記錄分隔符(通常換行符)。如果使用數組參數調用,則 會將每個元素寫入新行。如果不帶參數被調用, 會輸出一個記錄分隔符。

來源:http://www.ruby-doc.org/core-1.9.3/IO.html#method-i-puts

而且,我認爲這只是irb?因爲調用puts在正常應用程序中不顯示其返回值。

+2

我會補充說,每個紅寶石指令返回的東西。每種方法,歸因,聲明(類,方法)。而在irb中,您看到的是返回值(或評估)。所以這些方法沒有意義返回任何他們剛剛返回的消息。 –

+0

謝謝。這對我很有幫助。你是對的,我正在使用irb。我瞭解到,在一個正常的應用程序中編程會更好。我是新手,你認爲你可以詳細說明嗎? –

+1

'irb'可以編程,我只是提出一點,在除irb外的任何ruby程序中,除非你專門檢查返回值,否則它不會顯示給你。 –

1

亨特麥克米倫的回答是正確的。

但是,如果您想要一個實際返回非零值的置換替換,我創建了a gem called reputs

reputs 'blink ' *4 
blink blink blink blink 
=> "blink blink blink blink " 
5

您可能需要使用p而不是put秒。

p打印並返回該值。