GnuSmalltalkUsersGuide:BaseChapter 010

From 흡혈양파의 번역工房
Jump to navigation Jump to search
BindingDictionary

BindingDictionary

네임스페이스 Smalltalk에 정의됨

슈퍼클래스: Dictionary

범주: 언어-구현


나는 보통 대문자로 시작하는 내 키(key)로 특별한 접근 방법을 제공하는 특별한 형태의 dictionary이다; 또 나의 연관은 사실상 VariableBinding 인스턴스에 해당한다.
나의 키는 부호(로 예상됨)이므로, dictionary 내 키와 검색된 키를 맞추기 위해 ==를 사용한다 – 좀 더 속도가 빨라질 것으로 예상하고 선택한 방법이다.


BindingDictionary: 접근하기

define: aSymbol

aSymbol을 수신자 내부에서 nil과 동등한 것으로 정의하라. 그러한 변수가 이미 존재할 경우 실패한다 (실패를 원치 않으면 #at:put: 을 사용하라).

doesNotUnderstand: aMessage

Namespace로의 접근성을 읽기 위해 단항 선택자와, 접근성을 쓰기 위해 1인자(one-argument) 키워드 선택자의 매핑을 시도하라. a) 선택자의 첫 글자가 대문자로 시작할 경우에만 작동하고, b) ‘aNamespace Variable: value’는 ‘aNamespace at: #Variable put: value’ 와 동일한 것이 아니라 ‘aNamespace set: #Variable to: value’와 동일하다ㅡ후자는 항시 현재 네임스페이스를 참조하지만 전자는 새 변수를 정의하지 않고 슈퍼스페이스에서 검색한다 (그리고 변수를 찾을 수 없다면 오류를 발생시킨다).

environment

수신자가 연결된 환경을 응답하라. 이는 클래스 변수를 보유한 dictionary에 대한 클래스이거나 슈퍼 네임스페이스가 될 수 있다. 일반적으로 수신자의 이름을 계산하는 데 사용된다.

environment: anObject

수신자가 연결된 환경을 설정하라. 이는 클래스 변수를 보유한 dictionary에 대한 클래스이거나 슈퍼 네임스페이스가 될 수 있다. 일반적으로 수신자의 이름을 계산하는 데 사용된다.

import: aSymbol from: aNamespace

aNamespace 안의 값과 동일한 값에 연관된 aSymbol 부호를 수신자에게 추가하라. aNamespace가 주어진 키를 포함하지 않을 경우 실패한다.

name

수신자명을 응답하되, 기본적으로 수신자의 환경 이름과 동일하다.

nameIn: aNamespace

aNamespace로부터 참조될 때 수신자의 이름을 응답하라; 기본적으로 수신자의 환경으로 계산이 보류(defer)된다.


BindingDictionary: 기본 & 복사하기

= arg

수신자가 arg와 동일한지 응답하라. 동등성 검사(equality test)는 기본적으로 동등한(equal) 객체를 대상으로 하는 것과 같다. = 는 실패할 것이다; 수신자를 arg로 비교할 수 없을 경우 false를 응답하라.

hash

수신자에 대한 해시값을 응답하라. 객체의 해시값, #identityHash와 동일하다.


BindingDictionary: 복사하기

copy

수신자를 응답하라.

copyEmpty: newSize

크기가 newSize인 수신자의 빈 복사본을 응답하라.

copyEmptyForCollect

  1. collect:의 결과를 계산하기 위해 채워진 수신자의 빈 복사본을 응답하라.

copyEmptyForCollect: size

  1. collect:의 결과를 계산하기 위해 채워진 수신자의 빈 복사본을 응답하라.

deepCopy

수신자를 응답하라.

shallowCopy

수신자를 응답하라.


BindingDictionary: forward 선언

at: key put: value

주어진 키와 연관된 값을 보관하라. 해당할 경우 ‘Undeclared’ dictionary 안에서 컴파일러에 의해 임시로 보관된 Associations를 재활용하라.


BindingDictionary: 인쇄하기

printOn: aStream in: aNamespace

aNamespace로부터 참조될 때 수신자의 이름을 인쇄하라; 기본적으로 수신자의 환경으로 계산이 보류(defer)된다.


BindingDictionary: 검사하기

species

‘IdentityDictionary’를 응답하라.


Notes