저는 TCL을 처음 사용하고 다른 사람들이 개발 한 일부 코드에 대해 품질 보증을 제공합니다 (실제로는 그렇지 않습니다!). 이 특정 프로그램에는 많은 전역 변수가 있습니다. 때때로 전 세계와 관련하여 종종 upvar가 사용되는 것을 봅니다. 나는 upvar가 pass-by-reference를 모방한다는 것을 이해한다. 그러나 실제적인 차이점은 다음 두 procs 사이에 무엇이 될 것인가?tcl의 upvar와 global 명령의 실제 차이점은 무엇입니까
set myBigFatGloblVariable "hello"
proc myFirstProc { var1 var2 } {
upvar 1 $var1 local
set local [expr $var2 * 3]
}
proc mySecondProc { var2 } {
global myBigFatGlobalVariable
set $myBigFatGlobalVariable [expr $var2 * 3]
}
myFirstProc $myBigFatGlobalVariable 3
mySecondProc 3
myFirstProc이 더 깨끗하게 보일 것 같습니다. 내가 여기서 뭔가를 놓치고 있니?
첫 번째 줄에, 당신은 또한 맞춤법이 틀린 'myBigFatGlobalVariable'3. '안녕하세요'설정하는 3 변수를 'myBigFatGlobalVariable'로 설정하지 않을 유의하십시오. 을 $ 그것이 접두사 변수를 역 참조. 그것은 도움이 그쪽으로 코드를 게시하면 작동합니다. –