猿问

如何动态创建局部变量?

如何动态创建局部变量?

我有一个变量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.


30秒到达战场
浏览 657回答 3
3回答

HUH函数

不能在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请注意,两者eval和local_variable_set 做允许重新分配现有局部变量:foo = nileval 'foo = "bar"'foo  #=> "bar"binding.local_variable_set :foo, 'baz'foo  #=> "baz"
随时随地看视频慕课网APP

相关分类

Ruby
我要回答