GnuSmalltalkUsersGuide:BaseChapter 105

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

MappedCollection

네임스페이스 Smalltalk에 정의됨

슈퍼클래스: Collection

범주: 컬렉션-Keyed


나는 간접적으로 이름에 따라 색인된 객체의 컬렉션을 나타낸다. 관련 컬렉션에는 두 가지가 있다: 도메인과 맵. 맵은 외부이름과 색인을 도메인으로 매핑하고, 실제 연관을 포함한다. 올바로 작동하려면 도메인은 SequenceableCollection의 서브클래스의 인스턴스여야 하고, 맵은 Dictionary의 인스턴스이거나 SequenceableCollection의 서브클래스의 인스턴스여야 한다.
나의 사용 예는 요소들이 색인된 Dictionary의 구현을 들 수 있겠다. 도메인은 n개의 요소가 있는 SequenceableCollection일 것이고, 맵은 도메인 내의 색인으로 각 키를 연관시키는 Dictionary일 것이다. 키별로 접근하기와 열거 실행 등을 들 수 있겠다. 나의 인스턴스를 요청할 수도 있다; 색인별로 접근하려면 도메인에 직접 접근해야 할 것이다.
또 다른 예는 단일 n*m Array로 구현된 행렬로의 row 또는 column 접근을 구현하는 것을 들 수 있겠다: Array는 도메인인 반면 맵은 Interval이 해당할 것이다.


MappedCollection 클래스: 인스턴스 생성

collection: aCollection map: aMap

주어진 도메인(aCollection)과 맵을 이용해 새 MappedCollection을 응답하라.

new

해당 메서드는 사용해선 안 된다; 대신 #collection:map: 을 이용해 MappedCollection을 생성하라.


MappedCollection: 기본

add: anObject

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

at: key

주어진 키에서 객체를 응답하라.

at: key put: value

주어진 키에서 값을 보관하라.

atAll: keyCollection

주어진 키만 포함하는 새 MappedCollection를 응답하라. 새 MappedCollection은 맵의 타입에 따라 keyCollection 또는 키에 대한 연속 정수를 사용할지도 모른다. 그 중 하나라도 맵에서 발견되지 않으면 실패한다.

collect: aBlock

맵과 키가 같아서 키로 접근 시 수신자 내 키에서 접근 가능한 값을 aBlock을 통해 전달하여 얻는 값을 생성하는 Collection을 응답하라. 결과는 굳이 또 다른 MappedCollection일 필요가 없다.

contents

수신자의 값으로 된 백(bag)을 응답하라.

copyFrom: a to: b

a 번째부터 b 번째까지 수신자 내 항목을 모두 포함하는 새 컬렉션을 응답하라.

do: aBlock

각 객체마다 aBlock을 평가하라.

domain

수신자의 도메인을 응답하라.

keys

해당 컬렉션으로 접근 시 사용 가능한 키를 응답하라.

keysAndValuesDo: aBlock

aBlock을 평가하고 두 개의 인자를 전달하되 하나는 해당 컬렉션으로 접근 시 사용 가능한 키이고 나머지 하나는 값으로 전달한다.

keysDo: aBlock

해당 컬렉션에 접근 시 사용 가능한 키에 aBlock을 평가하라.

map

수신자의 맵을 응답하라.

reject: aBlock

aBlock이 false를 리턴하는 도메인 내 객체를 응답하라.

select: aBlock

aBlock이 true를 리턴하는 도메인 내 객체를 응답하라.

size

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



Notes