GnuSmalltalkUsersGuide:BaseChapter 062
- Dictionary
Dictionary
네임스페이스 Smalltalk에 정의됨
슈퍼클래스: HashedCollection
범주: 컬렉션-Keyed
- 나는 유일한 객체에 의해 색인되는 객체인 dictionary를 구현하고 (주로 Symbol의 인스턴스), 다른 객체를 해당 색인과 연관시킨다. 나는 상등 연산자 =를 이용해 색인의 등가성을 결정한다. 일반 Dictionary를 사용하는 대부분의 장소에서는 LookupTable이 더 편리할 것이다; 사용 전에 LookupTable의 주석을 참고하라. 몇몇 특수 사례에서 유용한 특수 기능도 몇 가지 있다.
Dictionary 클래스: 인스턴스 생성
from: anArray
{1 -> 2. 3 -> 4}처럼 anArray 내의 Association의 키와 값에서 생성된 새 dictionary를 응답하라. anArray는 bracesyntax(중괄호 구문)를 이용해 명시되어야 한다.
new
기본 크기로 된 새 dictionary를 생성하라.
Dictionary: 접근하기
add: newObject
newObject 연관을 수신자에게 추가하라.
addAll: aCollection
모든 'aCollection' 의 요소를 수신자에게 추가하고 aCollection를 응답하라.
associationAt: key
주어진 키에 대한 키/값 Association을 응답하라. 키를 찾을 수 없는 경우 실패한다.
associationAt: key ifAbsent: aBlock
주어진 키에 대한 키/값 Association을 응답하라. 키를 찾을 수 없는 경우 aBlock을 평가하라(결과를 응답하라).
associations
Dictionary의 내용을 Associations의 Set로서 리턴하라.
at: key
주어진 키에 연관된 값을 응답하라. 키를 찾을 수 없는 경우 실패한다.
at: key ifAbsent: aBlock
주어진 키에 연관된 값을 응답하고, 키를 찾을 수 없는 경우 aBlock을 평가한 결과를 응답하라.
at: aKey ifAbsentPut: aBlock
주어진 키에 연관된 값을 응답하라. 키를 찾을 수 없는 경우 aBlock을 평가하고 결과를 리턴하기 전에 결과를 aKey와 연관시켜라.
at: aKey ifPresent: aBlock
aKey가 없는 경우 nil을 응답하라. 그 외의 경우 aBlock을 평가하고 연관된 값을 전달하며, 호출의 결과를 응답하라.
at: key put: value
값을 주어진 키와 연관시켜 보관하라.
atAll: keyCollection
주어진 키만 포함하는 Dictionary를 응답하라. 찾을 수 없다면 실패한다.
keyAtValue: value
주어진 값에 연관된 키를 응답하고, 값을 찾을 수 없는 경우 nil을 응답하라.
keyAtValue: value ifAbsent: exceptionBlock
주어진 값에 연관된 키를 응답하라. 값을 찾을 수 없는 경우 exceptionBlock를 평가하라(결과를 응답). 중요: 값의 비교에 ==가 사용된다.
keys
수신자의 키를 포함하는 Set의 유형을 응답하라.
values
수신자의 값을 포함하는 Array를 응답하라.
Dictionary: 끔찍한 ST-80 호환성 hacks
findKeyIndex: key
키가 색인된 변수의 키로서 존재하는지 보기를 시도한다. Nil 또는 올바른 키와 연관이 발견되는 즉시 그 슬롯의 색인이 응답된다.
Dictionary: dictionary 열거하기
associationsDo: aBlock
dictionary 내 각 연관을 aBlock으로 전달하라.
collect: aBlock
aBlock으로 각 값의 전달과 리턴 값의 전달을 통해 값을 얻으면서 키가 동일한 새 dictionary를 응답하라.
do: aBlock
dictionary 내 각 값을 aBlock으로 전달하라.
keysAndValuesDo: aBlock
dictionary 내 각 키/값 쌍을 구분된 두 개의 매개변수로서 aBlock에 전달하라.
keysDo: aBlock
dictionary 내 각 키를 aBlock으로 전달하라.
reject: aBlock
aBlock이 false를 리턴하는 키/값 쌍을 포함하는 새 dictionary를 응답하라. aBlock은 그 쌍에서 값 부분만 수신한다.
select: aBlock
aBlock이 true를 리턴하는 키/값 쌍을 포함하는 새 dictionary를 응답하라. aBlock은 그 쌍에서 값 부분만 수신한다.
Dictionary: dictionary 제거하기
remove: anAssociation
dictionary에서 anAssociation의 키를 제거하라.
remove: anAssociation ifAbsent: aBlock
dictionary에서 anAssociation의 키를 제거하라.
removeAllKeys: keys
오류를 발생시키지 않고 keys 내 모든 키를 제거하라.
removeAllKeys: keys ifAbsent: aBlock
keys 내 모든 키를 제거하고, 키가 누락되었음을 발견할 때마다 매개변수로서 aBlock에게 전달하라.
removeKey: key
dictionary에서 전달된 키를 제거하고, 발견할 수 없는 경우 실패한다.
removeKey: key ifAbsent: aBlock
dictionary에서 전달된 키를 제거하고, 발견할 수 없는 경우 aBlock을 평가한 결과를 응답하라.
Dictionary: dictionary 검사하기
includes: anObject
수신자가 그 값들 중 하나로 anObject를 포함하는지 응답하라.
includesAssociation: anAssociation
수신자가 anAssociation의 키에 해당하는 키를 포함하고, 그 값이 anAssociation의 값인지를 응답하라.
includesKey: key
수신자가 주어진 키를 포함하는지를 응답하라.
occurrencesOf: aValue
aValue의 발생 횟수가 수신자의 값들 중 하나인지 응답하라.
Dictionary: 네임스페이스 프로토콜
allSuperspaces
컬렉션 내 수신자의 모든 슈퍼스페이스를 응답하라.
allSuperspacesDo: aBlock
수신자의 슈퍼스페이스마다 aBlock을 평가하라 (BindingDictionary의 경우 슈퍼스페이스가 0).
definedKeys
수신자의 키를 포함하는 Set의 유형을 응답하라.
definesKey: key
수신자가 주어진 키를 정의하는지를 응답하라. '정의'란 수신자의 슈퍼스페이스가 존재할 경우 그것이 고려되지 않음을 의미한다.
hereAssociationAt: key
이 네임스페이스*에서 'key'가 명시한 대로 명명된 변수에 대한 연관을 리턴하라. 키를 찾을 수 없는 경우 검색은 네임스페이스에서 실행되지 *않을* 것이며 메서드는 실패할 것이다.
hereAssociationAt: key ifAbsent: aBlock
이 네임스페이스*에서 'key'가 명시한 대로 명명된 변수에 대한 연관을 리턴하라. 키를 찾을 수 없는 경우 검색은 네임스페이스에서 실행되지 *않을* 것이며 aBlock이 즉시 평가될 것이다.
hereAt: key
이 네임스페이스*에서 'key'가 명시한 대로 명명된 변수에 대한 연관을 리턴하라. 키를 찾을 수 없는 경우 검색은 네임스페이스에서 실행되지 *않을* 것이며 메서드는 실패할 것이다.
hereAt: key ifAbsent: aBlock
이 네임스페이스*에서 'key'가 명시한 대로 명명된 변수에 대한 연관을 리턴하라. 키를 찾을 수 없는 경우 검색은 네임스페이스에서 실행되지 *않을* 것이며 aBlock이 즉시 평가될 것이다.
inheritsFrom: aNamespace
aNamespace가 수신자의 직접 및 간접 슈퍼스페이스 중 하나에 해당하는지를 응답하라.
superspace
수신자의 슈퍼스페이스를 응답하라. BindingDictionary의 경우 nil이 될 것이다.
withAllSuperspaces
컬렉션 내 수신자와 그 슈퍼스페이스를 모두 응답하라. BindingDictionary의 경우 0이 될 것이다.
withAllSuperspacesDo: aBlock
수신자와 그의 모든 직접 및 간접 슈퍼스페이스에 대해 aBlock을 호출하라 (BindingDictionary는 아무 것도 갖지 않겠지만).
Dictionary: 인쇄하기
inspect
수신자 내 모든 인스턴스 변수와 객체를 Transcript 상에 인쇄하라.
printOn: aStream
수신자의 표현을 aStream 상에 인쇄하라.
Dictionary: 재해싱하기
rehash
수신자를 재해싱하라.
Dictionary: 제거하기
removeAllKeysSuchThat: aBlock
aBlock이 true를 리턴하는 모든 키를 수신자로부터 제거하라.
Dictionary: 보관하기
storeOn: aStream
수신자로 컴파일하는 스몰토크 코드를 aStream 상에 인쇄하라.
Dictionary: 검사하기
= aDictionary
수신자와 aDictionary가 같은지 응답하라.
hash
수신자에 대한 해시값을 응답하라.