-1

私がやりたいのは、変数に次のように動的に名前を付けることです。

def instance(instance)
    @instance = instance #@instance isn't actually a variable called @instance, rather a variable called @whatever was passed as an argument
end

これどうやってするの?

4

3 に答える 3

5

を使用しinstance_variable_setます。

varname = '@foo'
value = 'bar'
self.instance_variable_set varname, value
@foo   # => "bar"

または、発信者が「@」を入力する必要がない場合:

varname = 'foo'
value = 'bar'
self.instance_variable_set "@#{varname}", value
@foo   # => "bar"
于 2012-05-05T02:11:52.703 に答える
3

私が正しく理解している場合は、「instance_variable_set」を使用します。

class A
end

a = A.new
a.instance_variable_set("@whatever", "foo")

a.instance_variable_get("@whatever") #=> "foo"
于 2012-05-05T02:10:09.393 に答える
0

あなたは本当にできません。

で遊ぶこともできますがeval、実際には読みにくくなります。

正しいものを使用するifか、代わりにハッシュを使用してください。

# With Hash:
values = {}
a = :foo
values[a] = "bar"
values[:foo] # => "bar"

# With if
calc = "bar"
if a_is_foo
  foo = calc
else
  oof = calc
end
foo # => "bar"
于 2012-05-05T01:48:51.867 に答える