2010-12-15 5 views
-3

루비 소스 코드를 확인할 때 일부 전역 변수에 액세스하는 것은 가상 일 수 있습니다. 내가 정확히, 그래서 실제로 루비 글로벌 변수의 거대한 세트 사이에이 방법 액세스 일부 글로벌 변수가 기억한다면루비에서 전역 변수를 정의 할 때 프로 시저를 호출하려면 어떻게해야합니까?

나는, 그렇게, 일을 define_global_variables_get("$a",some_get_procedure), define_global_variables_set("$a",some_set_procedure) 의미한다.

내 질문은 내 글로벌 변수 get/set을 어떻게 정의합니까? 루비 코드에서와 비슷합니까?

+0

이 질문을 바꿔주십시오. 당신이 알고 싶은 것을 말하기 란 정말로 어렵습니다. –

+0

@ user195957, 내가 원하는 것을 (내가 생각하는) 할 방법을 찾았습니다. 나는 내 대답을 완전히 다시 썼다. 네가하고 싶은게 뭔지 나는 이해 했는가? –

+0

안녕하세요, 그건 내 이야기의 일부가되고, 내가 의미하는 것은 전역 var를 설정/설정하는 것은 마치 일부 프로 시저 (객체의 속성처럼), 클래스 Base, attr_accessor : vow, end, Base에 액세스하는 것과 같습니다. new.vow는 실제로 메소드입니다. – femto

답변

2

액세스 할 때 변수의 값을 얻기 위해 코드를 평가하는 전역 변수가 필요합니까? 너 그렇게 할 수있어. promise 보석이 필요합니다.

#!/usr/bin/ruby1.8 

require 'promise' 

$a = promise do 
    puts "generating value of $a" 
    123 
end 

이렇게하면 $ a가 블록의 결과로 설정되지만 $ a가 실제로 액세스 될 때까지 블록이 실행되지 않습니다. 캐시 된 값을 반환합니다 그것을 두 번째 액세스

puts $a 

# => generating value of $a 
# => 123 

를, 그래서 블록은 다시 호출되지 않습니다 :의 처음 액세스 할 수는 혼란 때문에

puts $a 

# => 123 
관련 문제