2012-05-05 10 views

答えて

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" 
+0

どうやって?あなたはどういう意味ですか? –

+0

彼は以下を意味します: 'var =:a;ハッシュ= {var => 'foo'};ハッシュ[var] = 'バー'; hash [var]; ' – d11wtq

+0

私はこれに' eval'を使用することは絶対に勧めません。それは設計上の瑕疵であり、評価は間違った手で危険です;) – d11wtq

2

私が正しく理解していれば、あなたが "instance_variable_set" を使用したい:

class A 
end 

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

a.instance_variable_get("@whatever") #=> "foo" 
5

使用instance_variable_setを。

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

それとも、呼び出し側が「@」を供給する必要がしたくない場合:[Rubyで動的に設定されたローカル変数]の

varname = 'foo' 
value = 'bar' 
self.instance_variable_set "@#{varname}", value 
@foo # => "bar" 
関連する問題