输出顺序

Dre*_*ams 5 ruby

代码如下:

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

print "a=", a, "\n"
Run Code Online (Sandbox Code Playgroud)

生产:

Function 'a' called
a=99
Run Code Online (Sandbox Code Playgroud)

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

Ser*_*sev 11

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


Dar*_*tle 8

首先,定义方法a; 什么也没打印出来.

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

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