嵌套范围说明

时间:2014-10-16 01:19:26

标签: ruby scope

我已经在某处读过Ruby中的块有嵌套范围,这是什么意思?我已经阅读了有关嵌套作用域的内容,有些声明这些是创建新作用域的作用域。我不确定Ruby是否属实,因为块在do/end之间,如果你在那里定义一些变量,例如,它没有创建新的范围。有人可以帮我解释一下吗?

1 个答案:

答案 0 :(得分:1)

Ruby的块是词法范围的,因此关闭它们的外部范围。

例如:

foo = 'foo'

->{

  # new scope can see outer foo
  puts foo # => 'foo'

  # new scope can manipulate outer foo
  foo = foo + '!'

  bar = 'bar'

}.call

puts foo # => 'foo!'

# outer scope cannot see variables created in block scope
defined?(bar).nil? # => true