2012-03-03 3 views

답변

4

당신은 같은 인스턴스 변수를 쉽게 할 수 있습니다

이이 바르와 함께 할 쉽습니다 이유에 대해 궁금하다면
>> a = "variable" 
=> "variable" 
>> instance_variable_set(:"@#{a}_name", []) 
=> [] 
>> @variable_name 
=> [] 

, Ruby 변수 바인딩 및 범위 지정 규칙에 대해 읽어보십시오.

+0

도움에 감사드립니다. –

+0

@ # {a} _name에있는 #은 무엇을하고 있으며 기호로 설정 했습니까? –

+0

@CoryGwin : ':'기호는 심볼로 만들고, 큰 따옴표로 묶인 문자열 안의'# {}'는 보통의 문자열 보간법입니다. –

3

하지만 그렇게하지 마십시오. 그래서 훨씬 쉽고 더 나은 해시를 사용하는 :

variable = {} 
variable['name'] = [] 

또는

vars = {} 
vars[["variable", "name"]] = [] 
+0

undelcared var 또는 메소드를 사용할 때는 예 해시를 강력히 권장합니다. 그것은 그것을 돌볼 수있다 – ziq

+0

나는 이것이 이름 간격을 위해 가지고 가는가? 클래스의 일부이거나 객체 인스턴스를 추측하면 어떨까요? –

+0

이 질문은 이전에 물어 보았습니다. 아직 그럴만 한 이유가 있습니다. PHP에는 일종의 변수 보간법이 있습니다. 그리고 나는 이런 질문의 대부분이 그 가증을 루비로 가져 오는 사람들이라고 생각합니다 ...;) – DGM

1

경우; 당신은 여전히 ​​변수로 할 수있는 :

>> a = 'variable' 
=> "variable" 
>> eval(a + '_name=[]') 
=> [] 
>> variable_name 
=> [] 

는 평가가 얼마나 악을 이해 희망!