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

Posted

技术标签:

【中文标题】在 Ruby 中是不是可以显式创建局部变量【英文标题】:In Ruby is it possible to create a local variable explicitly在 Ruby 中是否可以显式创建局部变量 【发布时间】:2013-09-07 03:06:14 【问题描述】:

例如

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

【问题讨论】:

【参考方案1】:

根据myPerl 文档,我认为您正在 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

【讨论】:

【参考方案2】:

小心! (相关,虽然不是完全你在问什么......)

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

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

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

【讨论】:

以上是关于在 Ruby 中是不是可以显式创建局部变量的主要内容,如果未能解决你的问题,请参考以下文章

局部变量为什么需要显式赋值,否则编译不了

成员变量 局部变量

Java 中的变量

ruby 检查是否在视图中定义了局部变量

JavaScript 声明全局变量和局部变量

命名参数作为 Ruby 中的局部变量