2013-12-19 2 views

답변

3

현재이 작업을 수행 할 수있는 방법이 없습니다. 당신이 할 수없는 하나의 범위 지정 행동이기 때문에 가끔 논의했지만, 아직 그것을 필요로하는 정말로 강력한 이유를 보지 못했습니다. 너 하나있어?

+0

글로벌 변수를 변경하려는 동일한 이유. 그러나 어쨌든 순수한 함수 만 사용하려고합니다. – ThePiercingPrince

0

나는 몇 가지 코드를 생성 할과는 include_string 명령을 사용하여 실행이 :

불행하게도, '글로벌'키워드가 정말 모듈이있는 파일 내에서 범위된다 변수에 영향을주지 않습니다 (모듈 def 외부)이 정의되었습니다. 변수가 모듈의 범위를 벗어나면 내 손에 직접 변수를 함수로 전달하는 경우에만 에 액세스 할 수 있습니다. 그래서 같이

: 내가 제대로 여기에 글로벌 키워드를 사용하고 있습니까 :

module my_mod 

function IDontWork(x:int) 
    global mp 
    include_string("Show(mp)") 
end #function IDontWork 

function IWork(x:int, mp::Minipipe) 
    include_string("Show(mp)") 
end #function IWork 

function Show(mp::Minipipe) 
    println(mp.txt) 
end #Show 
end #my_mod 

#mp declared in global scope: 
mp = Minipipe() 

#FAILS: 
my_mod.IDontWork(2) 

#Only Way it WORKS: 
my_mod.IWork(2, mp) 

내 대답은 질문입니까? 이 일을하는 더 좋은 방법이 있습니까 ??