>> p "hi"; puts p "hello"
"hi"
"hello"
hello
=> nil
從輸出IRB Ruby的輸出機制,它是很清楚,"hi"
和"hello"
是由兩個p
打印。 然後puts
印在下面;混亂與「P」,「打印」和「看跌期權」
hello
=> nil
但問題是:作爲p
回報
"hello"
=> "hello"
什麼puts
收到了左邊的一個或p
的權利?現在看那個更深入地我嘗試以下:
>> p "hi"; puts print "hello"
"hi"
hello
=> nil
綜觀上述,我的理解是,p
印刷的一個。與下面的輸出部分混淆。
hello
=>nil
hello
是通過印刷然後print
其中=> nil
左側?如果我認爲puts
已經被解僱與print
返回值nil
則輸出應是
hello
=>nil # the extra blank line is for `nil.to_s` .
但是從實際輸出我不能斷定。如果我認爲puts
已經被解僱與print
印出來的值hello
則輸出應是
hello
=>nil # then where the output of print statement went out?
但是從實際輸出我不能斷定。
我使用的是Ubuntu 12.10和Ruby 1.9.3。任何人都可以幫助我理解發生了什麼?
如果你的谷歌「紅寶石p打印」,你會得到一些StackOverflow結果,很好地解釋了每種方法的作用。而FYI,'p把print foo'和'p(puts(print(foo)))''相同。 – 2013-02-16 09:11:44
@AmitKumarGupta Humm ... Amit ji'p把print foo放在p(puts(print(foo)))'這是一個很好的信息。 – 2013-02-16 09:31:09
這似乎是它的重複或延續http://stackoverflow.com/questions/14899116/how-puts-statement-works-in-ruby – 2013-02-16 11:17:51