GnuSmalltalkUsersGuide:BaseChapter 147

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.
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: 를 이용해 수치 색인에 의한 수신자 접근이 가능한지 응답하라.


Notes