GnuSmalltalkUsersGuide:BaseChapter 085

From 흡혈양파의 번역工房
Jump to: navigation, search
HashedCollection

HashedCollection

네임스페이스 Smalltalk에 정의됨

슈퍼클래스: Collection

범주: 컬렉션-비정렬


나는 객체를 특유의 방식으로 보관할 수 있는 해싱된 컬렉션으로서, 컬렉션 내 그 객체들에 대해 빠른 응답을 제공한다.


HashedCollection 클래스: 인스턴스 생성

new

기본크기로 된 수신자의 새 인스턴스를 응답하라.

new: anInteger

주어진 용량(capacity)으로 된 수신자의 새 인스턴스를 응답하라.

withAll: aCollection

요소들이 aCollection에 위치한 컬렉션을 응답하라.


HashedCollection: 접근하기

add: newObject

newObject를 집합으로 추가하되 집합이 그것의 발생을 이미 포함하지 않을 경우에만 추가해야 한다. 중복이 발견될 경우 실패하지 말라. anObject를 응답하라.

at: index

이 클래스의 인스턴스를 대상으로 해당 메서드를 호출해서는 안 된다.

at: index put: value

이 클래스의 인스턴스를 대상으로 해당 메서드를 호출해서는 안 된다.


HashedCollection: builtins

primAt: anIndex

Private - 수신자에 대한 해시 테이블의 anIndex번째 항목을 응답하라. basicAt: 대신 이를 이용하면 표현을 더 쉽게 변경할 수 있다.

primAt: anIndex put: value

Private - 수신자에 대한 해시 테이블의 anIndex번째 항목에 값을 보관하라. basicAt:put: 대신 이를 이용하면 표현을 더 쉽게 변경할 수 있다.

primSize

Private - 수신자에 대한 해시 테이블의 크기를 응답하라. basicSize 대신 이를 이용하면 표현을 더 쉽게 변경할 수 있다.


HashedCollection: 복사하기

deepCopy

수신자의 깊은 복사를 리턴한다 (인스턴스 변수는 수신자의 인스턴스 변수에 대한 복사본이다)

shallowCopy

수신자의 얕은 복사를 리턴한다 (인스턴스 변수가 복사되지 않는다)


HashedCollection: 컬렉션의 요소 열거하기

do: aBlock

집합의 nil이 아닌 멤버를 열거하라.


HashedCollection: 재해싱하기

rehash

수신자를 재해싱하라.


HashedCollection: 제거하기

remove: oldObject ifAbsent: anExceptionBlock

집합에서 oldObject를 제거하라. 발견될 경우 oldObject를 응답하고, 그 외의 경우 anExceptionBlock을 평가하여 그 값을 응답하라.


HashedCollection: 저장하기와 로딩하기

postLoad

객체 로딩 이후 호출된다; 정체성 객체(identity object)는 그들의 해시를 변형할 가능성이 매우 높으므로 컬렉션을 재해싱하라.

postStore

객체를 덤프한 이후에 호출된다. 아무 일도 하지 않는다 - 기본적으로 이는 #postLoad를 기본값으로 호출하기 때문이다.


HashedCollection: 보관하기

storeOn: aStream

수신자로 컴파일하는 일부 스몰토크 코드를 aStream 상에 보관하라.


HashedCollection: 컬렉션 검사하기

= aHashedCollection

두 집합이 같은 멤버십을 갖는 경우 true를, 그렇지 않은 경우 false를 리턴하라.

capacity

수신자가 증가하기 이전에 얼마나 많은 요소를 보유할 수 있는지 응답하라.

hash

집합의 멤버에 대한 해시 코드를 리턴하라. 순서는 중요하지 않으므로 가환연산자를 사용해 해시값을 계산한다.

includes: anObject

수신자가 anObject의 인스턴스를 포함하는지 응답하라.

isEmpty

수신자가 비었는지 응답하라.

occurrencesOf: anObject

anObject의 발생횟수를 리턴하라. 우리는 집합이므로 0 또는 1이 되겠다. Nil은 절대 집합 안에 직접적으로 존재하지 않으므로 특수 케이싱(special case)한다 (결과는 항상 1이다).

size

수신자의 크기를 응답하라.


Notes