我想看看具有相同参数的 proc 调用是否每次都会给出相同的结果。pureproc
用参数调用是免费的,所以每次我调用时pureproc(1,1)
,我都会得到相同的结果。dirtyproc
用参数调用是绑定在其环境中的,因此即使它具有与 相同的数量pureproc
,它的输出也将取决于环境。
ruby-1.9.2-p136 :001 > envx = 1 => 1 ruby-1.9.2-p136 :003 > pureproc = Proc.new{ |a,b| a+b } => # ruby-1.9.2-p136 :004 >dirtyproc = Proc.new{ |a,b| a+b+环境 }
我如何以编程方式确定被调用的过程或方法是否是免费的,正如仅绑定在必须传入的变量上所定义的那样?也欢迎对绑定、局部变量等进行任何解释。