为了账号安全,请及时绑定邮箱和手机立即绑定

如何动态创建局部变量?

如何动态创建局部变量?

30秒到达战场 2019-06-29 10:42:19
如何动态创建局部变量?我有一个变量var = "some_name"我想要创建一个新的对象并将它分配给some_name..我该怎么做?例如:var = "some_name"some_name = Struct.new(:name) # I need thisa = some_name.new('blah') # so that I can do this.
查看完整描述

3 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

不能在Ruby1.9+中动态创建局部变量(可以在Ruby1.8中通过eval):

eval 'foo = "bar"'foo  # NameError: undefined local variable or method `foo' for main:Object

不过,它们可以在版本代码本身中使用:

eval 'foo = "bar"; foo + "baz"'#=> "barbaz"

Ruby 2.1添加local_variable_set,但这也不能创建新的局部变量:

binding.local_variable_set :foo, 'bar'foo # NameError: undefined local variable or method `foo' for main:Object

这种行为不可能在不修改Ruby本身的情况下进行更改。另一种方法是考虑将数据存储在另一个数据结构中,例如哈希,而不是许多局部变量:

hash = {}hash[:my_var] = :foo

请注意,两者evallocal_variable_set 允许重新分配现有局部变量:

foo = nileval 'foo = "bar"'foo  #=> "bar"binding.local_variable_set :foo, 'baz'foo  #=> "baz"


查看完整回答
反对 回复 2019-06-29
  • 3 回答
  • 0 关注
  • 649 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信