5

"어휘 변수"라는 용어를 몇 번이나 보았습니다. 대부분 클로저 문맥에서 사용되었습니다. Paul Graham은 let 표현식을 사용하여 정의 된 변수를 참조하는 Lisp에 관한 자신의 책에서이 용어를 사용합니다.가끔 "어휘 변수"라는 단어가 들리는 이유는 무엇입니까?

어휘 범위 지정은 정적 범위 지정의 또 다른 이름이라는 것을 알고 있습니다. 어휘 변수는 프로그램 단위의 참조 환경에서 볼 수있는 변수입니까?

나는이 연휴 기간에 내 친구들과 가족에게 깊은 인상을 남기기 위해이 용어를 사용하고 싶습니다. 누군가 나를 도울 수 있습니까?

+2

+1 프로그래밍 용어로 가족에게 깊은 인상을 심어주고 싶습니다. 너는 패밀리가 있어야한다. :) –

답변

0

어휘 변수는 프로그램 단위의 참조 환경에서 볼 수 있지만 프로그램 단위의 참조 환경에서 볼 수있는 모든 변수는 반드시 어휘 변수가 아닙니다.

기본적으로 어휘 변수는 정의 된 범위에 대해 특정 인 변수입니다. Perl과 같은 언어에서는 근본적인 동적 패키지 네임 스페이스와 겹쳐진 어휘 이름 공간 인 두 개의 네임 스페이스가 서로 마주하고 있습니다. 그래서 $ foo는 어휘 적으로 선언되었는지 아닌지에 따라 둘 중 하나를 참조 할 수 있습니다.

+0

"어휘 변수 (lexical variable)"와 "로컬 변수 (local variable)"라는 용어는 서로 바꿔 쓸 수 있다고 말하는 것이 안전할까요? 어휘가 좀 더 정확합니까? –

+0

아니요. Perl은 local() 키워드를 사용하여 어휘가 아닌 범위 - 지역 변수를 패키지 네임 스페이스에 구현했습니다. – chaos

3

어휘 변수는 어휘 범위 내에서만 (이름으로) 참조 할 수있는 변수입니다. 바꾸어 말하면, 변수의 범위는 프로그램 실행의 역 동성이 아니라 프로그램의 텍스트에 의해 정의됩니다. 변수와 그것에 바인드 된 값은 예를 들어 클로저에서 캡쳐 된 경우와 같이 어휘 범위를 벗어나는 범위 (수명)를 가질 수 있습니다.

scope and extent의 설명을 참조하십시오.

관련 문제