수색…


실제 작동중인 동적 범위 지정

동적 범위 지정은 변수 조회가 정의 된 곳이 아닌 함수가 호출 되는 범위에서 발생 함을 의미합니다.

$ x=3
$ func1 () { echo "in func1: $x"; }
$ func2 () { local x=9; func1; }
$ func2
in func1: 9
$ func1
in func1: 3

어휘 적으로 범위가 지정된 언어에서 func1 은 전역 범위에서 항상 x 를 찾습니다. func1 은 로컬 범위에 정의 되어 있기 때문입니다.

동적 범위 언어에서 func1호출 된 범위를 찾습니다. 이 내에서 호출 될 때 func2 먼저 본문에 보이는 func2 의 값 x . 거기에 정의되어 있지 않으면 func2 가 호출 된 전역 범위를 조사합니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow