GnuSmalltalkUsersGuide:BaseChapter 143
- RunArray
RunArray
네임스페이스 Smalltalk에 정의됨
슈퍼클래스: OrderedCollection
범주: 컬렉션-순차 가능
- 나의 인스턴스들은 OrderedCollections인데, 이는 자신이 보관하는 것들에게 RLE(런 길이 부호화) 압축을 적용한다. 나를 사용할 때는 주의를 기울여야 한다: 나는 공간을 엄청나게 절약해주지만 나의 인스턴스들은 선형 접근 시간을 제공하지 않는다. RunArray의 행위는 현재 OrderedCollection의 행위와 비슷하다 (RunArray로 요소를 추가할 수 있다); 어쩌면 ArrayedCollection처럼 행위해야 할지도 모른다.
RunArray 클래스: 인스턴스 생성
new
빈 RunArray를 응답하라.
new: aSize
aSize run을 위한 공간이 있는 RunArray를 응답하라.
RunArray: 접근하기
at: anIndex
색인 anIndex에 있는 요소를 응답하라.
at: anIndex put: anObject
anIndex 색인에 있는 요소를 anObject로 대체하고 anObject를 응답하라.
RunArray: 추가하기
add: anObject afterIndex: anIndex
색인 anIndex에 위치한 요소 다음에 anObject를 추가하라.
addAll: aCollection afterIndex: anIndex
색인 anIndex에 위치한 요소 다음에 aCollection의 모든 요소를 추가하라. aCollection이 정렬되지 않은 경우 그 요소들은 #do: 순서가 아닌 순서로 추가될 수 있다.
addAllFirst: aCollection
수신자의 시작에 aCollection의 모든 요소를 추가하라. aCollection이 정렬되지 않은 경우 그 요소들은 #do: 순서가 아닌 순서로 추가될 수 있다.
addAllLast: aCollection
수신자의 끝에 aCollection의 모든 요소를 추가하라. aCollection이 정렬되지 않은 경우 그 요소들은 #do: 순서가 아닌 순서로 추가될 수 있다.
addFirst: anObject
수신자의 시작에 anObject를 추가하라. 주의: 해당 연산은 심각한 성능 저하를 야기할 수 있다.
addLast: anObject
수신자의 끝에 anObject를 추가하라.
RunArray: 기본
first
수신자 내 첫 번째 요소를 응답하라.
last
수신자의 마지막 요소를 응답하라.
size
수신자 내 요소의 개수를 응답하라.
RunArray: 복사하기
deepCopy
수신자의 요소의 복사본을 포함하는 수신자의 복사본을 응답하라 (-#copy를 사용).
shallowCopy
수신자의 복사본을 응답하라. 요소들은 복사되지 않는다.
RunArray: 열거하기
do: aBlock
수신자 내 모든 객체를 열거하고 각각을 aBlock으로 전달하라.
objectsAndRunLengthsDo: aBlock
수신자 내 모든 run을 열거하고 매 run마다 두 개의 매개변수를 aBlock으로 전달하라: 첫 번째는 반복 객체이고 두 번째는 복사본의 개수다.
RunArray: 제거하기
removeAtIndex: anIndex
수신자로부터 색인 anIndex에 위치한 객체를 제거하고 제거된 객체를 응답하라.
removeFirst
수신자로부터 첫 번째 객체를 제거하고 제거된 객체를 응답하라.
removeLast
수신자로부터 마지막 객체를 제거하고 제거된 객체를 응답하라.
RunArray: 검색하기
indexOf: anObject startingAt: anIndex ifAbsent: aBlock
수신자 내 anObject의 첫 번째 복사본의 색인을 응답하되 색인 anIndex에 위치한 요소에서 검색을 시작한다. 같은 객체를 찾을 수 없는 경우 aBlock을 평가한 결과를 응답하라.
RunArray: 검사하기
= anObject
수신자가 anObject와 같다면 true를 응답하라.
hash
수신자에 대한 해시값을 응답하라.