위치: #%variable-reference
위치: #%variable-reference (Locations: #%variable-reference)
Racket에서는 변수가 어디에 저장되어 있는지 그 '위치(location)'를 나타내는 값을 얻을 수 있어요. 이 문서에서는 변수 참조 값(variable reference value)을 만들어 내는 #%variable-reference 폼을 설명합니다.
출처: Racket Reference
본문
syntax
(#%variable-reference id)
(#%variable-reference (#%top . id))
(#%variable-reference)
id의 위치를 나타내는 불투명한 변수 참조 값(variable reference value)을 만들어 냅니다. 이때 id는 변수로 바인딩되어 있어야 해요. id를 주지 않으면, 그 결과 값은 주변 컨텍스트(즉, 둘러싼 모듈 안, 또는 이 폼이 모듈 안에 있지 않다면 최상위 레벨) 안에서 정의된 '익명(anonymous)' 변수를 가리킵니다.
(#%top . id)를 사용하면, 그 변수 참조는 (#%top . id)가 가리키는 것과 같은 변수를 가리킵니다. 참고로 id가 지역적으로 바인딩되어 있거나, 모듈 안에서 id가 트랜스포머로 바인딩된 경우에는 (#%top . id)가 허용되지 않습니다.
변수 참조는 variable-reference->empty-namespace, variable-reference->resolved-module-path, variable-reference->namespace와 함께 사용할 수 있습니다. 다만 define-namespace-anchor나 namespace-anchor->namespace 같은 기능들이 이것들을 감싸서 더 명확한 인터페이스를 제공해 주기도 해요. 변수 참조는 저수준 확장에도 유용합니다. 자세한 내용은 "Inside: Racket C API"를 참고하세요.
base 패키지의 버전 8.2.0.7에서 변경됨: #%top 단독 사용과 일관되도록 #%top 처리 방식이 변경되었습니다.
더 알아보기
- 이름공간 (Namespaces) —
namespace-anchor->namespace와 네임스페이스 관련 기능 - 완전히 확장된 프로그램 (Fully Expanded Programs) —
#%variable-reference가 사용되는 문맥 - 매크로 (Macros) — 변수 참조를 만드는 언어 구조