为什么首先打印方法输出?

时间:2016-02-10 04:43:22

标签: ruby

我写了以下内容:

greeting="i am awesome"
puts("I was saying that #{greeting}")
# => I was saying that i am awesome

当我将其更改为:

def showman
  print("I am awesome ")
end
puts("I was saying that #{showman}")
# => I am awesome I was saying that 

为什么首先打印方法输出,然后是字符串?为什么打印不像"I was saying that I am awesome"?我该怎样做才能使输出成为这样的?

如果我将showman功能修改为:

def showman
  return ("I am awesome ")
end

然后它给出了所需的输出。为什么以这种方式使用return会对输出产生影响?

1 个答案:

答案 0 :(得分:3)

  

在第一个输出中,首先打印方法输出,然后打印字符串。

为了评估字符串,在评估整个字符串之前评估(season_average, active),这将打印showman

  

为什么它的打印不像“我说我很棒”

因为"I am awesome "返回print,并且字符串中的nil插值计算为空字符串(nil"#{showman}""#{nil}") 。如果没有""print方法将返回字符串showman

  

为什么以这种方式使用return来改变输出?

使用"I am awesome "并不是有用的。缺少return正在发挥作用。