block的环境理解:
def my_method x = "aaa" yield("lala")endx = "ooo"my_method {|y| "#{x}, #{y} fdg" }
?上面的代码得到的结果是 ooo,lala fdg
原因是运行block时候是带着当前环境的上下文的,也就是说当前环境的临时变量,类变量,全局变量,常量,都是跟着block走的,而调用block的地方的环境上下文是对block来说不可见的,也就是说只有定义block的时候的上下文对block来说才有意义。所以这个东西很多人称他为-----闭包。因为调用她的时候,外部是无法对他产生影响的。