를 사용하여 조건부 과제를 수행, 내가 좋아하는 속성 이름의 목록을 가지고 다음과 같은 : 나는 반사를 사용하여 목록을 반복하고 싶습니다 루비 루비 반사
names = [
:foo,
#...
]
는 재산에 조건 할당을 수행 이름. 어떻게이 사용 루비의 반사를 달성 할 수
for name in names
#use local variable "name" to perform assignment using reflection
end
을 :
self.foo ||= 0
나는 이런 식으로 뭔가 뭔가를하고 싶습니다 : 그래서, 예를 들어, 오히려 이것보다, 이는 반사를 사용하지 않습니다 ?
의미가 'self.foo || = 0'과 어떻게 의미가 비슷하거나 다른지 설명 할 수 있습니까? 예를 들어, 여전히 메시지 전달 "전송"의미론을 사용합니까, 아니면이를 우회합니까? – jbeard4
instance_variable_set은 변수가 이미 존재하지 않으면 정의합니다. 그래서 사실 이것은 속성 주입입니다; 엄격하게 소유하지 않은 속성 목록을 전달하는 속성 목록에 속성이 있으면 instance_variable_set이 신경 쓰지 않습니다. instance_variable_set은 '광역'으로 설정된 호스와 풀 스피드로 설정된 펌프로 클래스의 앞 잔디밭에 주차 된 불쌍한 페인트 트럭입니다. 즉, instance_variable_set이 수업을 즐겁게 바꿀 것입니다 너를 위해서. – mcfinnigan
'self.foo'를 설정하는 것은'@ foo'를 설정하는 것과 다를 수 있습니다. –