내가하고 싶은 것은 이름 변수가 동적 같다 :이름 인스턴스 변수 동적으로 루비
def instance(instance)
@instance = instance #@instance isn't actually a variable called @instance, rather a variable called @whatever was passed as an argument
end
내가 어떻게 할 수 있습니까?
내가하고 싶은 것은 이름 변수가 동적 같다 :이름 인스턴스 변수 동적으로 루비
def instance(instance)
@instance = instance #@instance isn't actually a variable called @instance, rather a variable called @whatever was passed as an argument
end
내가 어떻게 할 수 있습니까?
정말 할 수 없습니다.
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"
나는 당신이 "instance_variable_set"를 사용하려면 제대로 이해하고 :
class A
end
a = A.new
a.instance_variable_set("@whatever", "foo")
a.instance_variable_get("@whatever") #=> "foo"
사용 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"
[루비에서 동적으로 설정 지역 변수] (의 중복 가능성 http://stackoverflow.com/questions/4963678/dynamic-set-local-variables-in-ruby) – coreyward