GnuSmalltalkUsersGuide:BaseChapter 001: Difference between revisions
Onionmixer (talk | contribs) (GSUG AbstractNamespace 페이지 추가) |
Onionmixer (talk | contribs) (내용수정) |
||
Line 1: | Line 1: | ||
; | ;AbstractNamespace | ||
==AbstractNamespace== | |||
'''네임스페이스 Smalltalk에 정의됨''' | '''네임스페이스 Smalltalk에 정의됨''' | ||
Line 16: | Line 14: | ||
===AbstractNamespace class: 인스턴스 생성=== | |||
====new==== | |||
비활성화됨 – 인스턴스를 생성하기 위해 #new를 사용하라. | 비활성화됨 – 인스턴스를 생성하기 위해 #new를 사용하라. | ||
====primNew: parent name: spaceName==== | |||
private – 주어진 이름과 부모로 새로운 네임스페이스를 생성하고, 그것을 참조하는 키를 부모로 추가하라. | private – 주어진 이름과 부모로 새로운 네임스페이스를 생성하고, 그것을 참조하는 키를 부모로 추가하라. | ||
Line 28: | Line 26: | ||
===AbstractNamespace: 접근하기=== | |||
====allAssociations==== | |||
수신자 내에 연관(association)과 각 슈퍼스페이스가 있는 Dictionary를 응답하라 (중복 키는 네임스페이스 계층구조에서 더 깊이 위치한 연관과 관련이 있다) | 수신자 내에 연관(association)과 각 슈퍼스페이스가 있는 Dictionary를 응답하라 (중복 키는 네임스페이스 계층구조에서 더 깊이 위치한 연관과 관련이 있다) | ||
====allBehaviorsDo: aBlock==== | |||
네임스페이스 내에서 각 클래스와 메타클래스마다 aBlock을 한 번씩 평가하라. | 네임스페이스 내에서 각 클래스와 메타클래스마다 aBlock을 한 번씩 평가하라. | ||
====allClassObjectsDo: aBlock==== | |||
네임스페이스 내에서 각 클래스와 메타클래스마다 aBlock을 한 번씩 평가하라. | 네임스페이스 내에서 각 클래스와 메타클래스마다 aBlock을 한 번씩 평가하라. | ||
====allClassesDo: aBlock==== | |||
네임스페이스 내에서 각 클래스마다 aBlock을 한 번씩 평가하라. | 네임스페이스 내에서 각 클래스마다 aBlock을 한 번씩 평가하라. | ||
====allMetaclassesDo: aBlock==== | |||
네임스페이스 내에서 각 메타클래스마다 aBlock을 한 번씩 평가하라. | 네임스페이스 내에서 각 메타클래스마다 aBlock을 한 번씩 평가하라. | ||
====classAt: aKey==== | |||
aKey에 일치하는 값이 클래스일 경우 그 값을 응답하라. aKey를 찾을 수 없거나 클래스가 아닌 것과 연관된 경우 실패한다. | aKey에 일치하는 값이 클래스일 경우 그 값을 응답하라. aKey를 찾을 수 없거나 클래스가 아닌 것과 연관된 경우 실패한다. | ||
====classAt: aKey ifAbsent: aBlock==== | |||
aKey에 일치하는 값이 클래스일 경우 그 값을 응답하라. aBlock을 평가하고, aKey를 찾을 수 없거나 클래스가 아닌 것과 연관된 경우 결과를 응답하라. | aKey에 일치하는 값이 클래스일 경우 그 값을 응답하라. aBlock을 평가하고, aKey를 찾을 수 없거나 클래스가 아닌 것과 연관된 경우 결과를 응답하라. | ||
Line 60: | Line 58: | ||
===AbstractNamespace: 컴파일하기=== | |||
====addSharedPool: aDictionary==== | |||
나를 이용해 컴파일한 클래스에 주어진 바인딩을 환경으로 가져오라 (import). | 나를 이용해 컴파일한 클래스에 주어진 바인딩을 환경으로 가져오라 (import). | ||
====import: aDictionary==== | |||
나를 이용해 컴파일한 클래스에 주어진 바인딩을 환경으로 가져오라. | 나를 이용해 컴파일한 클래스에 주어진 바인딩을 환경으로 가져오라. | ||
====removeSharedPool: aDictionary==== | |||
직접 풀(direct pool) 리스트에서 aDictionary를 제거하라. | 직접 풀(direct pool) 리스트에서 aDictionary를 제거하라. | ||
====sharedPoolDictionaries==== | |||
내 클래스를 위해 가져온 공유 풀(이름이 아닌)을 응답하라. | 내 클래스를 위해 가져온 공유 풀(이름이 아닌)을 응답하라. | ||
Line 80: | Line 78: | ||
===AbstractNamespace: 복사하기=== | |||
====copyEmpty: newSize==== | |||
크기가 newSize인 수신자의 빈 복사본을 응답하라. | 크기가 newSize인 수신자의 빈 복사본을 응답하라. | ||
====whileCurrentDo: aBlock==== | |||
현재 수신자로 설정된 네임스페이스로 aBlock을 평가하라. 평가 결과를 응답하라. | 현재 수신자로 설정된 네임스페이스로 aBlock을 평가하라. 평가 결과를 응답하라. | ||
Line 92: | Line 90: | ||
===AbstractNamespace: 네임스페이스 계층구조=== | |||
====addSubspace: aSymbol==== | |||
aSymbol로 명명된 네임스페이스를 생성하고, 수신자의 서브스페이스로 추가한 후 그것을 응답하라. | aSymbol로 명명된 네임스페이스를 생성하고, 수신자의 서브스페이스로 추가한 후 그것을 응답하라. | ||
====allSubassociationsDo: aBlock==== | |||
수신자의 각 서브스페이스 내에서 모든 연관마다 aBlock을 한 번씩 호출하라. | 수신자의 각 서브스페이스 내에서 모든 연관마다 aBlock을 한 번씩 호출하라. | ||
====allSubspaces==== | |||
Set에서 수신자의 직접 및 간접 서브스페이스를 응답하라. | Set에서 수신자의 직접 및 간접 서브스페이스를 응답하라. | ||
====allSubspacesDo: aBlock==== | |||
모든 직접 및 간접 서브스페이스에 대해 aBlock을 호출하라. | 모든 직접 및 간접 서브스페이스에 대해 aBlock을 호출하라. | ||
====allSuperspacesDo: aBlock==== | |||
수신자의 슈퍼스페이스마다 aBlock을 한 번씩 호출하라. | 수신자의 슈퍼스페이스마다 aBlock을 한 번씩 호출하라. | ||
====includesClassNamed: aString==== | |||
수신자 또는 그 슈퍼스페이스가 주어진 클래스를 포함하는지 여부를 응답하라-해당 메서드는 (#includesKey: 와 달리) aString이 intern 되도록 요구하지 않고, (#includesGlobalNamed:와 달리) 전역 변수가 클래스 객체인 경우 true를 리턴하기만 한다는 사실을 주목한다. | 수신자 또는 그 슈퍼스페이스가 주어진 클래스를 포함하는지 여부를 응답하라-해당 메서드는 (#includesKey: 와 달리) aString이 intern 되도록 요구하지 않고, (#includesGlobalNamed:와 달리) 전역 변수가 클래스 객체인 경우 true를 리턴하기만 한다는 사실을 주목한다. | ||
====includesGlobalNamed: aString==== | |||
수신자 또는 그 슈퍼스페이스 중 어떤 것이 주어진 키를 포함하는지 여부를 응답하라-해당 메서드는 (#includesKey: 와 달리) aString이 intern 되도록 요구하지 않지만, (#includesClassNamed:와 달리) 전역 변수가 클래스 객체가 아닌 경우에도 true를 리턴한다는 사실을 주목한다. | 수신자 또는 그 슈퍼스페이스 중 어떤 것이 주어진 키를 포함하는지 여부를 응답하라-해당 메서드는 (#includesKey: 와 달리) aString이 intern 되도록 요구하지 않지만, (#includesClassNamed:와 달리) 전역 변수가 클래스 객체가 아닌 경우에도 true를 리턴한다는 사실을 주목한다. | ||
====removeSubspace: aSymbol==== | |||
aSymbol로 명명된 나의 서브스페이스를 계층구조에서 제거하라. | aSymbol로 명명된 나의 서브스페이스를 계층구조에서 제거하라. | ||
====selectSubspaces: aBlock==== | |||
aBlock을 충족시키는 수신자의 서브스페이스 Set를 리턴하라. | aBlock을 충족시키는 수신자의 서브스페이스 Set를 리턴하라. | ||
====selectSuperspaces: aBlock==== | |||
aBlock을 충족시키는 수신자의 슈퍼스페이스 Set를 리턴하라. | aBlock을 충족시키는 수신자의 슈퍼스페이스 Set를 리턴하라. | ||
====siblings==== | |||
수신자와 같은 네임스페이스의 다른 자식들을 모두 응답하라. | 수신자와 같은 네임스페이스의 다른 자식들을 모두 응답하라. | ||
====siblingsDo: aBlock==== | |||
다른 루트 네임스페이스마다 aBlock을 한 번씩 평가하여 네임스페이스를 매개변수로서 전달하라. | 다른 루트 네임스페이스마다 aBlock을 한 번씩 평가하여 네임스페이스를 매개변수로서 전달하라. | ||
====subspaces==== | |||
수신자의 직접 서프스페이스를 응답하라. | 수신자의 직접 서프스페이스를 응답하라. | ||
====subspacesDo: aBlock==== | |||
모든 직접 서브스페이스에 aBlock을 호출하라. | 모든 직접 서브스페이스에 aBlock을 호출하라. | ||
====superspace==== | |||
수신자의 슈퍼스페이스를 응답하라. | 수신자의 슈퍼스페이스를 응답하라. | ||
====superspace: aNamespace==== | |||
수신자의 슈퍼스페이스가 'aNamespace' 가 되도록 설정하라. 또한 수신자를 그것의 서브스페이스로서 추가하라. | 수신자의 슈퍼스페이스가 'aNamespace' 가 되도록 설정하라. 또한 수신자를 그것의 서브스페이스로서 추가하라. | ||
====withAllSubspaces==== | |||
직접 및 간접 서브스페이스와 함께 수신자를 포함하는 Set를 응답하라. | 직접 및 간접 서브스페이스와 함께 수신자를 포함하는 Set를 응답하라. | ||
====withAllSubspacesDo: aBlock==== | |||
수신자와 모든 직접 및 간접 서브클래스에 대해 aBlock을 호출하라. | 수신자와 모든 직접 및 간접 서브클래스에 대해 aBlock을 호출하라. | ||
Line 168: | Line 166: | ||
===AbstractNamespace: 슈퍼스페이스 오버라이드=== | |||
====inheritedKeys==== | |||
수신자와 그 슈퍼스페이스 내에서 모든 키의 Set를 응답하라. | 수신자와 그 슈퍼스페이스 내에서 모든 키의 Set를 응답하라. | ||
====set: key to: newValue==== | |||
newValue 를 'key'에서 명시한 대로 명명된 변수로 할당하라. 해당 메서드는 새 변수를 정의하지 않을 것이다; 대신 키를 찾을 수 없다면 슈퍼스페이스에서 찾고, 어떤 슈퍼스페이스에서도 변수를 찾을 수 없을 경우 오류를 발생시킨다. newValue를 응답하라. | newValue 를 'key'에서 명시한 대로 명명된 변수로 할당하라. 해당 메서드는 새 변수를 정의하지 않을 것이다; 대신 키를 찾을 수 없다면 슈퍼스페이스에서 찾고, 어떤 슈퍼스페이스에서도 변수를 찾을 수 없을 경우 오류를 발생시킨다. newValue를 응답하라. | ||
====set: key to: newValue ifAbsent: aBlock==== | |||
newValue 를 'key'에서 명시한 대로 명명된 변수로 할당하라. 해당 메서드는 새 변수를Assign 정의하지 않을 것이다; 대신 키를 찾을 수 없다면 슈퍼스페이스에서 찾고, 찾을 수 없다면 aBlock을 평가할 것이다. newValue를 응답하라. | newValue 를 'key'에서 명시한 대로 명명된 변수로 할당하라. 해당 메서드는 새 변수를Assign 정의하지 않을 것이다; 대신 키를 찾을 수 없다면 슈퍼스페이스에서 찾고, 찾을 수 없다면 aBlock을 평가할 것이다. newValue를 응답하라. | ||
Line 186: | Line 184: | ||
===AbstractNamespace: 인쇄하기=== | |||
====name==== | |||
수신자명을 응답하라. | 수신자명을 응답하라. | ||
====name: aSymbol==== | |||
수신자명을 aSymbol로 변경하라. | 수신자명을 aSymbol로 변경하라. | ||
====nameIn: aNamespace==== | |||
현재 네임스페이스가 aNamespace일 때 수신자로 컴파일하는 스몰토크 코드를 응답하라. | 현재 네임스페이스가 aNamespace일 때 수신자로 컴파일하는 스몰토크 코드를 응답하라. | ||
====printOn: aStream==== | |||
수신자의 표현을 인쇄하라. | 수신자의 표현을 인쇄하라. | ||
====storeOn: aStream==== | |||
수신자로 컴파일하는 스몰토크 코드를 보관하라. | 수신자로 컴파일하는 스몰토크 코드를 보관하라. | ||
Line 210: | Line 208: | ||
===AbstractNamespace: 검사하기=== | |||
====isNamespace==== | |||
'true'를 응답하라. | 'true'를 응답하라. | ||
====isSmalltalk==== | |||
'false'를 응답하라. | 'false'를 응답하라. |
Latest revision as of 10:37, 21 January 2014
- AbstractNamespace
AbstractNamespace
네임스페이스 Smalltalk에 정의됨
슈퍼클래스: BindingDictionary
범주: 언어-구현
- 나는 특별한 형태의 dictionary 이다. 클래스들은 나의 인스턴스를 보유한다; 이것을 클래스의 '환경'이라 부른다.
AbstractNamespace class: 인스턴스 생성
new
비활성화됨 – 인스턴스를 생성하기 위해 #new를 사용하라.
primNew: parent name: spaceName
private – 주어진 이름과 부모로 새로운 네임스페이스를 생성하고, 그것을 참조하는 키를 부모로 추가하라.
AbstractNamespace: 접근하기
allAssociations
수신자 내에 연관(association)과 각 슈퍼스페이스가 있는 Dictionary를 응답하라 (중복 키는 네임스페이스 계층구조에서 더 깊이 위치한 연관과 관련이 있다)
allBehaviorsDo: aBlock
네임스페이스 내에서 각 클래스와 메타클래스마다 aBlock을 한 번씩 평가하라.
allClassObjectsDo: aBlock
네임스페이스 내에서 각 클래스와 메타클래스마다 aBlock을 한 번씩 평가하라.
allClassesDo: aBlock
네임스페이스 내에서 각 클래스마다 aBlock을 한 번씩 평가하라.
allMetaclassesDo: aBlock
네임스페이스 내에서 각 메타클래스마다 aBlock을 한 번씩 평가하라.
classAt: aKey
aKey에 일치하는 값이 클래스일 경우 그 값을 응답하라. aKey를 찾을 수 없거나 클래스가 아닌 것과 연관된 경우 실패한다.
classAt: aKey ifAbsent: aBlock
aKey에 일치하는 값이 클래스일 경우 그 값을 응답하라. aBlock을 평가하고, aKey를 찾을 수 없거나 클래스가 아닌 것과 연관된 경우 결과를 응답하라.
AbstractNamespace: 컴파일하기
나를 이용해 컴파일한 클래스에 주어진 바인딩을 환경으로 가져오라 (import).
import: aDictionary
나를 이용해 컴파일한 클래스에 주어진 바인딩을 환경으로 가져오라.
직접 풀(direct pool) 리스트에서 aDictionary를 제거하라.
내 클래스를 위해 가져온 공유 풀(이름이 아닌)을 응답하라.
AbstractNamespace: 복사하기
copyEmpty: newSize
크기가 newSize인 수신자의 빈 복사본을 응답하라.
whileCurrentDo: aBlock
현재 수신자로 설정된 네임스페이스로 aBlock을 평가하라. 평가 결과를 응답하라.
AbstractNamespace: 네임스페이스 계층구조
addSubspace: aSymbol
aSymbol로 명명된 네임스페이스를 생성하고, 수신자의 서브스페이스로 추가한 후 그것을 응답하라.
allSubassociationsDo: aBlock
수신자의 각 서브스페이스 내에서 모든 연관마다 aBlock을 한 번씩 호출하라.
allSubspaces
Set에서 수신자의 직접 및 간접 서브스페이스를 응답하라.
allSubspacesDo: aBlock
모든 직접 및 간접 서브스페이스에 대해 aBlock을 호출하라.
allSuperspacesDo: aBlock
수신자의 슈퍼스페이스마다 aBlock을 한 번씩 호출하라.
includesClassNamed: aString
수신자 또는 그 슈퍼스페이스가 주어진 클래스를 포함하는지 여부를 응답하라-해당 메서드는 (#includesKey: 와 달리) aString이 intern 되도록 요구하지 않고, (#includesGlobalNamed:와 달리) 전역 변수가 클래스 객체인 경우 true를 리턴하기만 한다는 사실을 주목한다.
includesGlobalNamed: aString
수신자 또는 그 슈퍼스페이스 중 어떤 것이 주어진 키를 포함하는지 여부를 응답하라-해당 메서드는 (#includesKey: 와 달리) aString이 intern 되도록 요구하지 않지만, (#includesClassNamed:와 달리) 전역 변수가 클래스 객체가 아닌 경우에도 true를 리턴한다는 사실을 주목한다.
removeSubspace: aSymbol
aSymbol로 명명된 나의 서브스페이스를 계층구조에서 제거하라.
selectSubspaces: aBlock
aBlock을 충족시키는 수신자의 서브스페이스 Set를 리턴하라.
selectSuperspaces: aBlock
aBlock을 충족시키는 수신자의 슈퍼스페이스 Set를 리턴하라.
siblings
수신자와 같은 네임스페이스의 다른 자식들을 모두 응답하라.
siblingsDo: aBlock
다른 루트 네임스페이스마다 aBlock을 한 번씩 평가하여 네임스페이스를 매개변수로서 전달하라.
subspaces
수신자의 직접 서프스페이스를 응답하라.
subspacesDo: aBlock
모든 직접 서브스페이스에 aBlock을 호출하라.
superspace
수신자의 슈퍼스페이스를 응답하라.
superspace: aNamespace
수신자의 슈퍼스페이스가 'aNamespace' 가 되도록 설정하라. 또한 수신자를 그것의 서브스페이스로서 추가하라.
withAllSubspaces
직접 및 간접 서브스페이스와 함께 수신자를 포함하는 Set를 응답하라.
withAllSubspacesDo: aBlock
수신자와 모든 직접 및 간접 서브클래스에 대해 aBlock을 호출하라.
AbstractNamespace: 슈퍼스페이스 오버라이드
inheritedKeys
수신자와 그 슈퍼스페이스 내에서 모든 키의 Set를 응답하라.
set: key to: newValue
newValue 를 'key'에서 명시한 대로 명명된 변수로 할당하라. 해당 메서드는 새 변수를 정의하지 않을 것이다; 대신 키를 찾을 수 없다면 슈퍼스페이스에서 찾고, 어떤 슈퍼스페이스에서도 변수를 찾을 수 없을 경우 오류를 발생시킨다. newValue를 응답하라.
set: key to: newValue ifAbsent: aBlock
newValue 를 'key'에서 명시한 대로 명명된 변수로 할당하라. 해당 메서드는 새 변수를Assign 정의하지 않을 것이다; 대신 키를 찾을 수 없다면 슈퍼스페이스에서 찾고, 찾을 수 없다면 aBlock을 평가할 것이다. newValue를 응답하라.
values 수신자의 값을 포함하는 Bag를 응답하라.
AbstractNamespace: 인쇄하기
name
수신자명을 응답하라.
name: aSymbol
수신자명을 aSymbol로 변경하라.
nameIn: aNamespace
현재 네임스페이스가 aNamespace일 때 수신자로 컴파일하는 스몰토크 코드를 응답하라.
printOn: aStream
수신자의 표현을 인쇄하라.
storeOn: aStream
수신자로 컴파일하는 스몰토크 코드를 보관하라.
AbstractNamespace: 검사하기
isNamespace
'true'를 응답하라.
isSmalltalk
'false'를 응답하라.