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或类似的。