在Ruby中,可以显式创建局部变量

时间:2013-09-03 19:13:29

标签: ruby variables block local proc

e.g。

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”关键字相同?

2 个答案:

答案 0 :(得分:6)

根据my 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

答案 1 :(得分:1)

小心! (相关,但不是完全你所要求的......)

变量范围的规则在1.8和1.9之间变化。见Variable Scope in Blocks

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

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