GnuSmalltalkUsersGuide:BaseChapter 062

From 흡혈양파의 번역工房
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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

수신자에 대한 해시값을 응답하라.


Notes