当前位置: 代码迷 >> Ruby/Rails >> ruby深入研究四
  详细解决方案

ruby深入研究四

热度:91   发布时间:2016-04-29 02:20:02.0
ruby深入研究4

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来说才有意义。所以这个东西很多人称他为-----闭包。因为调用她的时候,外部是无法对他产生影响的。