GnuSmalltalkUsersGuide:BaseChapter 010: Difference between revisions

From 흡혈양파의 번역工房
Jump to navigation Jump to search
(GSUG BindingDictionary 페이지 추가)
 
(오타수정)
 
Line 22: Line 22:
====doesNotUnderstand: aMessage====
====doesNotUnderstand: aMessage====


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


====environment====
====environment====
Line 34: Line 34:
====import: aSymbol from: aNamespace====
====import: aSymbol from: aNamespace====


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


====name====
====name====
Line 92: Line 90:
====at: key put: value====
====at: key put: value====


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




Line 107: Line 105:


====species====
====species====
'IdentityDictionary'를 응답하라.
‘IdentityDictionary’를 응답하라.





Latest revision as of 11:49, 21 January 2014

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