GnuSmalltalkUsersGuide:BaseChapter 147
- SequenceableCollection
SequenceableCollection
네임스페이스 Smalltalk에 정의됨
슈퍼클래스: Collection
범주: 컬렉션-순차 가능
- 나의 인스턴스들은 정렬된 객체의 컬렉션을 표현한다. 나는 접근 및 조작 메서드를 몇 가지 제공한다.
SequenceableCollection 클래스: 인스턴스 생성
join: aCollection separatedBy: sepCollection
aCollection이 SequenceableCollections의 컬렉션인 경우 sepCollection의 발생순으로 모든 요소들이 구분된 새 인스턴스를 응답하라.
SequenceableCollection: 기본
after: oldObject
oldObject 다음 요소를 리턴하라. oldObject를 발견할 수 없거나 이용할 수 있는 다음 객체가 없는 경우 오류가 발생한다.
allButFirst
첫 번째 객체 없이 수신자의 복사본을 응답하라.
allButFirst: n
처음부터 n 개의 객체 없이 수신자의 복사본을 응답하라.
allButLast
마지막 객체 없이 수신자의 복사본을 응답하라.
allButLast: n
마지막부터 n 개의 객체 없이 수신자의 복사본을 응답하라.
at: anIndex ifAbsent: aBlock
컬렉션의 anIndex 번째 항목을 응답하거나, 색인이 범위를 벗어난 경우 aBlock을 평가하여 결과를 응답하라.
atAll: keyCollection
#collect: 가 리턴하는 것과 같은 유형의 컬렉션, 즉 주어진 색인에서의 값만 포함하는 컬렉션을 응답하라. keyCollection 내 어떤 값이라도 수신자 범위에서 벗어난 경우 실패한다.
atAll: aCollection put: anObject
aCollection에 포함된 색인마다 anObject를 놓아라.
atAllPut: anObject
수신자 내 모든 색인마다 anObject를 놓아라.
atRandom
수신자의 무작위 항목을 리턴하라.
before: oldObject
oldObject 이전 요소를 리턴하라. oldObject를 발견할 수 없거나 앞의 객체를 이용할 수 없는 경우 오류가 발생한다.
first
수신자 내 첫 항목을 응답하라.
first: n
수신자 내 첫 n개 항목을 응답하라.
fourth
수신자 내 4번째 항목을 응답하라.
identityIncludes: anObject
우리가 anObject 객체를 포함하는지를 응답하라.
identityIndexOf: anElement
수신자 내 anElement와 동일한 객체의 첫 번째 발생의 색인을 응답하라. 어떤 항목도 발견되지 않는 경우 0을 응답하라.
identityIndexOf: anElement ifAbsent: exceptionBlock
수신자 내 anElement와 동일한 객체의 첫 번째 발생의 색인을 응답하라. 어떤 항목도 발견되지 않는 경우 exceptionBlock을 호출하여 결과를 응답하라.
identityIndexOf: anElement startingAt: anIndex
anElement와 동일한 객체를 포함하면서 anIndex보다 큰 첫 번째 색인을 응답하라. 어떤 항목도 발견되지 않는 경우 0을 응답하라.
identityIndexOf: anObject startingAt: anIndex ifAbsent: exceptionBlock
anObject와 정확히 동일한 객체를 포함하면서 anIndex보다 큰 첫 번째 색인을 응답하라. 어떤 항목도 발견되지 않는 경우 exceptionBlock을 호출하여 결과를 응답하라.
identityIndexOfLast: anElement ifAbsent: exceptionBlock
anElement와 동일한 객체를 포함하는 마지막 색인을 응답하라. 어떤 항목도 발견되지 않는 경우 exceptionBlock을 호출하여 결과를 응답하라.
includes: anObject
우리가 anObject를 포함하는지를 응답하라.
indexOf: anElement
수신자 내 첫 번째 anElement의 발생의 색인을 응답하라. 어떤 항목도 발견되지 않는 경우 0을 응답하라.
indexOf: anElement ifAbsent: exceptionBlock
수신자 내 첫 번째 anElement의 발생의 색인을 응답하라. 어떤 항목도 발견되지 않는 경우 exceptionBlock을 호출하여 결과를 응답하라.
indexOf: anElement startingAt: anIndex
anElement를 포함하면서 anIndex보다 큰 첫 번째 색인을 응답하라. 어떤 항목도 발견되지 않는 경우 0을 응답하라.
indexOf: anElement startingAt: anIndex ifAbsent: exceptionBlock
anElement를 포함하면서 anIndex보다 큰 첫 번째 색인을 응답하라. 어떤 항목도 발견되지 않는 경우 exceptionBlock을 호출하여 결과를 응답하라.
indexOfLast: anElement ifAbsent: exceptionBlock
anElement를 포함하는 마지막 색인을 응답하라. 어떤 항목도 발견되지 않는 경우 exceptionBlock을 호출하여 결과를 응답하라.
indexOfSubCollection: aSubCollection
aSubCollection에 일치하는 항목 시퀀스가 시작되면서 anIndex보다 큰 첫 번째 색인을 응답하라. 어떤 시퀀스도 발견되지 않는 경우 0을 응답하라.
indexOfSubCollection: aSubCollection ifAbsent: exceptionBlock
aSubCollection에 일치하는 항목 시퀀스가 시작되면서 anIndex보다 큰 첫 번째 색인을 응답하라. 어떤 시퀀스도 발견되지 않는 경우 0을 응답하라.
indexOfSubCollection: aSubCollection startingAt: anIndex
aSubCollection에 일치하는 항목 시퀀스가 시작되면서 anIndex보다 큰 첫 번째 색인을 응답하라. 어떤 시퀀스도 발견되지 않는 경우 0을 응답하라.
indexOfSubCollection: aSubCollection startingAt: anIndex ifAbsent: exceptionBlock
aSubCollection에 일치하는 항목 시퀀스가 시작되면서 anIndex보다 큰 첫 번째 색인을 응답하라. 어떤 시퀀스도 발견되지 않는 경우 exceptionBlock을 호출하여 결과를 응답하라.
last
수신자 내 마지막 항목을 응답하라.
last: n
수신자 내 마지막 n개 항목을 응답하라.
second
수신자 내 두 번째 항목을 응답하라.
third
수신자 내 세 번째 항목을 응답하라.
SequenceableCollection: 비교하기
endsWith: aSequenceableCollection
수신자가 aSequenceableCollection과 같은 문자로 끝날 경우 true를 리턴한다.
startsWith: aSequenceableCollection
수신자가 aSequenceableCollection과 같은 문자로 시작할 경우 true를 리턴한다.
SequenceableCollection: 연결하기(concatenating)
join: sepCollection
나의 첫 요소처럼 나의 모든 요소들이 (컬렉션이어야 한다) sepCollection에 따라 (순서대로) 구분되어 있는 새 컬렉션을 응답하라. 나는 myself 대신 첫 번째 요소를 prototype으로 사용하는데, 나 자체보다는 나의 요소들이 다음과 같이 더 바람직한 프로퍼티를 공유할 가능성이 높기 때문이다:
#('hello,' 'world') join: ' ' => 'hello, world'
with: aSequenceableCollection
수신자와 aSequenceableCollection의 크기와 같은 Array를 리턴하되 각 요소는 수신자로부터 하나의 요소와 aSequenceableCollection의 요소 하나를 포함해 2-요소 Arrays여야 한다.
with: seqColl1 with: seqColl2
수신자와 인자들의 크기와 같은 Array를 리턴하되 각 요소는 수신자로부터 하나의 요소와 각 인자의 요소 하나씩을 포함해 3-요소 Arrays여야 한다.
with: seqColl1 with: seqColl2 with: seqColl3
수신자와 인자들의 크기와 같은 Array를 리턴하되 각 요소는 수신자로부터 하나의 요소와 각 인자의 요소 하나씩을 포함해 4-요소 Arrays여야 한다.
SequenceableCollection: SequenceableCollections 복사하기
, aSequenceableCollection
수신자의 끝에 aSequenceableCollection을 추가하고(#add:를 이용) 새 컬렉션을 응답하라.
copyAfter: anObject
anObject의 첫 번째 발생부터 끝까지 수신자의 모든 요소를 보유하는 새 컬렉션을 응답하라.
copyAfterLast: anObject
anObject의 마지막 발생부터 끝까지 수신자의 모든 요소를 보유하는 새 컬렉션을 응답하라.
copyFrom: start
start번째부터 수신자 내 모든 항목을 포함하는 새 컬렉션을 응답하라.
copyFrom: start to: stop
start번째부터 stop번째까지 수신자 내 모든 항목을 포함하는 새 컬렉션을 응답하라.
copyReplaceAll: oldSubCollection with: newSubCollection
oldSubCollection에 일치하는 모든 시퀀스가 newSubCollection으로 대체된 새 컬렉션을 응답하라.
copyReplaceFrom: start to: stop with: replacementCollection
'start' 색인부터 'stop' 색인까지 요소를 제외하고 수신자와 같은 요소를 같은 순서로 포함함과 동시 수신자와 동일한 클래스의 새 컬렉션을 응답하라.
Start<stop인 경우 이는 replacementCollection의 내용으로 대체된다. 대신 'copyReplaceFrom: 4 to: 3 with: anArray' 에서와 같이 start = (stop + 1)인 경우 수신자의 모든 요소는 응답된 복사본에 존재할 것이다; stop이 수신자의 크기와 동일할 경우 연산이 추가될 것이고, 그렇지 않은 경우 'start' 색인 앞에 삽입될 것이다.
copyReplaceFrom: start to: stop withObject: anObject
'start' 색인부터 'stop' 색인까지 요소를 제외하고 수신자와 같은 요소를 같은 순서로 포함함과 동시 수신자와 동일한 클래스의 새 컬렉션을 응답하라.
Start<stop인 경우 이는 anObject의 stop-start+1 복사본으로 대체된다. 대신 start = (stop + 1)인 경우 수신자의 모든 요소는 응답된 복사본에 존재할 것이다; stop이 수신자의 크기와 동일할 경우 연산이 추가될 것이고, 그렇지 않은 경우 'start' 색인 앞에 삽입될 것이다.
copyUpTo: anObject
수신자의 모든 요소를 처음부터 시작해 anObject는 제외하고 그 첫 번째 발생까지 모두 보유하는 새 컬렉션을 응답하라.
copyUpToLast: anObject
수신자의 모든 요소를 처음부터 시작해 anObject는 제외하고 그 마지막 발생까지 모두 보유하는 새 컬렉션을 응답하라.
copyWithFirst: anObject
anObject의 첫 번째 발생 이후 마지막까지 수신자의 모든 요소를 보유하는 새 컬렉션을 응답하라.
SequenceableCollection: 열거하기
anyOne
컬렉션의 명시되지 않은 요소를 응답하라.
do: aBlock
순차 가능한 컬렉션 내 모든 요소에 대해 aBlock을 평가하라.
do: aBlock separatedBy: sepBlock
순차 가능한 컬렉션 내 모든 요소에 대해 aBlock을 평가하라. 각 요소 사이에는 매개변수 없이 sepBlock을 평가하라.
doWithIndex: aBlock
순차 가능한 컬렉션 내 모든 요소에 대해 aBlock을 평가하고, 각 요소의 색인을 두 번째 매개변수로서 전달하라. 각 메서드는 이전 버전과의 호환성을 위해(backwards compatibility) 유지되고, ANSI 표준을 의무로 하지 않는다; #keysAndValuesDo: 를 사용하라.
findFirst: aBlock
aBlock이 true를 리턴하는 순차 가능 컬렉션의 첫 번째 요소의 색인을 리턴하고, 발견되지 않는 경우 0을 리턴하라.
findLast: aBlock
aBlock이 true를 리턴하는 순차 가능 컬렉션의 마지막 요소의 색인을 리턴하고, 발견되지 않는 경우 0을 리턴하라.
fold: binaryBlock
첫째로 수신자의 첫 번째와 두 번째 요소를 binaryBlock으로 전달하라; 잇따른 각 요소는 이전 평가 결과와 요소를 전달하라. 마지막 호출 결과를 응답하고, 컬렉션 크기가 1인 경우 첫 번째 요소를 응답하라. 컬렉션이 빈 경우 실패한다.
from: startIndex to: stopIndex do: aBlock
색인이 stopIndex로의 범위 색인 내에 있는 순차 가능 컬렉션 내 모든 요소들에 대해 aBlock을 평가하라.
from: startIndex to: stopIndex doWithIndex: aBlock
색인이 stopIndex로의 범위 색인 내에 있는 순차 가능 컬렉션 내 모든 요소들에 대해 aBlock을 평가하고, 각 요소의 색인을 두 번째 매개변수로서 전달하라. 해당 메서드는 이전 버전과의 호환성을 위해(backwards compatibility) 유지되고, ANSI 표준을 의무로 하지 않는다; #from:to:keysAndValuesDo: 를 사용하라.
from: startIndex to: stopIndex keysAndValuesDo: aBlock
색인이 stopIndex로의 범위 색인 내에 있는 순차 가능 컬렉션 내 모든 요소들에 대해 aBlock을 평가하고, 각 요소의 색인을 첫 번째 매개변수, 각 요소를 두 번째 매개변수로서 전달하라.
keys
수신자 내 유효한 색인에 해당하는 Interval을 리턴하라.
keysAndValuesDo: aBlock
순차 가능 컬렉션 내 모든 요소에 대해 aBlock을 평가하고, 각 요소의 색인을 첫 번째 매개변수, 각 요소를 두 번째 매개변수로서 전달하라.
readStream
수신자 상에서 스트리밍하는 ReadStream을 응답하라.
readWriteStream
수신자 상에서 스트리밍하는 ReadWriteStream을 응답하라.
reverse
수신자의 내용을 역순으로 응답하라.
reverseDo: aBlock
마지막부터 첫 번째까지 순차 가능 컬렉션 내 모든 요소에 대해 aBlock을 평가하라.
with: aSequenceableCollection collect: aBlock
수신자와 aSequenceableCollection 각각으로부터 취한 요소 쌍마다 aBlock을 평가하라; 블록의 리턴값으로 만들어진, 수신자와 같은 유형의 컬렉션을 응답하라. 수신자와 aSequenceableCollection의 크기가 같지 않은 경우 실패한다.
with: aSequenceableCollection do: aBlock
수신자와 aSequenceableCollection 각각으로부터 취한 요소 쌍마다 aBlock을 평가하라. 수신자와 aSequenceableCollection의 크기가 같지 않은 경우 실패한다.
SequenceableCollection: 조작
swap: anIndex with: anotherIndex
색인 anIndex에 위치한 항목을 다른 색인에 위치한 항목과 교체하라.
SequenceableCollection: 항목 대체하기
replaceAll: anObject with: anotherObject
수신자 내에서 anObject의 발생마다 anotherObject로 대체하라.
replaceFrom: start to: stop with: replacementCollection
start부터 stop까지 항목을 1부터 stop-start+1까지 범위에서 얻은 replacementCollection의 항목으로 대체하라 (컬렉션이 순차 가능하지 않은 경우 예기치 못한 순서로).
replaceFrom: start to: stop with: replacementCollection startingAt: repStart
start부터 stop까지 항목을 repStart부터 reStart+stop-start까지 범위에서 얻은 replacementCollection의 항목으로 대체하라.
replaceFrom: anIndex to: stopIndex withObject: replacementObject
start부터 stop까지 모든 항목을 replacementObject로 대체하라.
SequenceableCollection: 정렬하기
sort
항목 비교에 #<=를 사용하는 기본 정렬 블록에 따라 수신자의 내용을 정렬하라.
sortBy: sortBlock
주어진 정렬 블록에 따라 수신자의 내용을 정렬하되 항목의 쌍을 허용하고 첫 번째 항목이 두 번째 항목보다 작은 경우 true를 리턴하라.
SequenceableCollection: 아직 분류되지 않음
nextPutAllOn: aStream
수신자 내 모든 객체를 aStream에 작성하라.
SequenceableCollection: 검사하기
= aCollection
수신자의 항목이 aCollection 내의 항목과 일치하는지 응답하라.
hash
수신자에 대한 해시값을 응답하라.
inspect
수신자의 내용과 모든 인스턴스 변수를 Transcript 상에 인쇄하라.
isSequenceable
#at:/-#at:put: 를 이용해 수치 색인에 의한 수신자 접근이 가능한지 응답하라.