输出顺序

时间:2013-07-10 09:33:35

标签: ruby

以下代码:

def a
  print "Function 'a' called\n"
  99
end

print "a=", a, "\n"

产生

Function 'a' called
a=99

为什么function 'a' called首先出现?我希望首先显示a=

4 个答案:

答案 0 :(得分:11)

在将参数传递给方法之前,会对它们进行求值(以便您传递值)。评估函数a的调用会产生打印"function 'a' called的副作用。这就是它首先打印的原因。

答案 1 :(得分:8)

首先,定义方法a;什么也没有印刷。

然后,当你到达最后一行时,print的参数首先在该语句打印任何内容之前进行评估。第一个和最后一个参数是字符串文字。中间参数是对方法a的调用,在返回99之前打印"Function 'a' called\n"

然后,启动所有这一切的print语句最终准备打印,因为它的每个参数都已经过评估。

答案 2 :(得分:3)

首先,方法a完全执行,包括print "Function 'a' called\n"。只有在方法返回99后,才能执行第print "a=", a, "\n"行。

以这种方式思考:a的返回值需要先了解才能在最后一行打印。

答案 3 :(得分:1)

声明

print "a=", a, "\n"

作为

处理
print("a=", a(), "\n")

所以调用print的所有参数必须在调用之前进行评估。这意味着首先调用a

如果声明要在调用a=之前先输出a(),则必须包含对print的三次单独调用。