2013-03-24 56 views
-1
def say(arg) 
    "Hello, #{arg}.\n" 
end 

say("ABC") # => "Hello, ABC.\n" 

爲什麼在這裏打印而不是換行符?爲什麼換行符在這裏不起作用?

+1

因爲'「你好,ABC。\ n」'是調用'say'方法的結果。如果你想打印出字符串,在'say'方法內使用'puts say(「ABC」)'(或'puts'Hello,#{arg}。\ n「')。 – mudasobwa 2013-03-24 05:27:11

回答

2

因爲say返回一個字符串。它不打印任何東西。

如果你想打印東西,你應該嘗試:

def say(arg) 
    puts "Hello, #{arg}.\n" 
end 
0

你在irb最有可能想這裏面顯示字符串的Ruby表示。比較:

irb(main):007:0> puts say("ABC") + say("ABC") 
Hello, ABC. 
Hello, ABC. 
=> nil 
irb(main):008:0> puts "ABC" + "ABC" 
ABCABC 
=> nil 
0

它實際上從來沒有打印到stdio或類似的東西,你只是從函數返回一個字符串。

我會假設您在IRB中對此進行評估,IRB會打印出每個表達式的結果。 使用puts或類似的。

相關問題