Dyalog APL에서 다음 네임 스페이스 스크립트를 조정하십시오.
:Namespace Test
x ← 0
∇ F
##.Test.x ← 1
∇
∇ G; x
x ← 0
F
∇
:EndNamespace
Test.G를 실행 한 다음 Test.x를 실행 하면 출력이 0이됩니다. 어째서? Test.F 에서 Test.x를 어떻게 설정 합니까?
Tradfns ( ∇
및 헤더 등을 사용하는 기존 함수 )는 동적 범위 지정을 사용합니다. 즉, 호출 된 장소의 환경을 "볼"수 있습니다. (이는 어휘 범위 지정 을 사용하는 dfns와 대조적 이며 정의 된 환경을 참조합니다.) 자세한 내용 은 설명서 를 참조하십시오.
때 이제 G
통화가 F
반면이 x
의 현지화 G
, 글로벌는 x
에 보이지 않는 F
때문에의 현지화 G
그림자 세계 x
.
공지 사항 ##.Test.
우리가에있어 작업이. 네임 스페이스를 변경하지 않습니다 x
여전히 그림자가된다.
대신 dfns를 사용한 경우 원하는 동작이 표시됩니다.
:Namespace Test
x ← 0
F←{
##.Test.x←1
}
G←{
x←0
F ⍬
}
:EndNamespace
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다