4

例如

x = 123
p = Proc.new {
  x = 'I do not want change the value of the outer x, I want to create a local x'
}

在 Ruby 中是否有与 Perl 中的“my”关键字相同的东西?

4

2 回答 2

7

根据我的Perl文档,认为您正在 Ruby 中寻找如下内容:-

x = 123 
p = Proc.new {|;x|  
  x = 'I do not want change the value of the outer x, I want to create a local x'
}
p.call 
# => "I do not want change the value of the outer x, I want to create a local x"
x # => 123
于 2013-09-03T19:16:10.957 回答
1

谨防!(相关,虽然不完全是你要问的......)

变量范围的规则在 1.8 和 1.9 之间发生了变化。请参阅块中的变量范围

x = 100
[1,2,3].each do |x|

在不同的版本中表现不同。如果在块的 || 中声明变量 与块外的变量同名,那么在 1.8 中它将更改外部变量的值,而在 1.9 中则不会。

于 2013-09-04T09:21:37.487 回答