GnuSmalltalkUsersGuide:BaseChapter 001: Difference between revisions

From 흡혈양파의 번역工房
Jump to navigation Jump to search
(GSUG AbstractNamespace 페이지 추가)
 
(내용수정)
 
Line 1: Line 1:
;제 1 장. 기반 클래스
;AbstractNamespace


==기반 클래스==
==AbstractNamespace==
 
===AbstractNamespace===


'''네임스페이스 Smalltalk에 정의됨'''
'''네임스페이스 Smalltalk에 정의됨'''
Line 16: Line 14:




====AbstractNamespace class: 인스턴스 생성====
===AbstractNamespace class: 인스턴스 생성===


=====new=====
====new====


비활성화됨 – 인스턴스를 생성하기 위해 #new를 사용하라.
비활성화됨 – 인스턴스를 생성하기 위해 #new를 사용하라.


=====primNew: parent name: spaceName=====
====primNew: parent name: spaceName====


private – 주어진 이름과 부모로 새로운 네임스페이스를 생성하고, 그것을 참조하는 키를 부모로 추가하라.
private – 주어진 이름과 부모로 새로운 네임스페이스를 생성하고, 그것을 참조하는 키를 부모로 추가하라.
Line 28: Line 26:




====AbstractNamespace: 접근하기====
===AbstractNamespace: 접근하기===


=====allAssociations=====
====allAssociations====


수신자 내에 연관(association)과 각 슈퍼스페이스가 있는 Dictionary를 응답하라 (중복 키는 네임스페이스 계층구조에서 더 깊이 위치한 연관과 관련이 있다)
수신자 내에 연관(association)과 각 슈퍼스페이스가 있는 Dictionary를 응답하라 (중복 키는 네임스페이스 계층구조에서 더 깊이 위치한 연관과 관련이 있다)


=====allBehaviorsDo: aBlock=====
====allBehaviorsDo: aBlock====


네임스페이스 내에서 각 클래스와 메타클래스마다 aBlock을 한 번씩 평가하라.  
네임스페이스 내에서 각 클래스와 메타클래스마다 aBlock을 한 번씩 평가하라.  


=====allClassObjectsDo: aBlock=====
====allClassObjectsDo: aBlock====


네임스페이스 내에서 각 클래스와 메타클래스마다 aBlock을 한 번씩 평가하라.
네임스페이스 내에서 각 클래스와 메타클래스마다 aBlock을 한 번씩 평가하라.


=====allClassesDo: aBlock=====
====allClassesDo: aBlock====


네임스페이스 내에서 각 클래스마다 aBlock을 한 번씩 평가하라.
네임스페이스 내에서 각 클래스마다 aBlock을 한 번씩 평가하라.


=====allMetaclassesDo: aBlock=====
====allMetaclassesDo: aBlock====


네임스페이스 내에서 각 메타클래스마다 aBlock을 한 번씩 평가하라.
네임스페이스 내에서 각 메타클래스마다 aBlock을 한 번씩 평가하라.


=====classAt: aKey=====
====classAt: aKey====


aKey에 일치하는 값이 클래스일 경우 그 값을 응답하라. aKey를 찾을 수 없거나 클래스가 아닌 것과 연관된 경우 실패한다.
aKey에 일치하는 값이 클래스일 경우 그 값을 응답하라. aKey를 찾을 수 없거나 클래스가 아닌 것과 연관된 경우 실패한다.


=====classAt: aKey ifAbsent: aBlock=====
====classAt: aKey ifAbsent: aBlock====


aKey에 일치하는 값이 클래스일 경우 그 값을 응답하라. aBlock을 평가하고, aKey를 찾을 수 없거나 클래스가 아닌 것과 연관된 경우 결과를 응답하라.  
aKey에 일치하는 값이 클래스일 경우 그 값을 응답하라. aBlock을 평가하고, aKey를 찾을 수 없거나 클래스가 아닌 것과 연관된 경우 결과를 응답하라.  
Line 60: Line 58:




====AbstractNamespace: 컴파일하기====
===AbstractNamespace: 컴파일하기===


=====addSharedPool: aDictionary=====
====addSharedPool: aDictionary====


나를 이용해 컴파일한 클래스에 주어진 바인딩을 환경으로 가져오라 (import).
나를 이용해 컴파일한 클래스에 주어진 바인딩을 환경으로 가져오라 (import).


=====import: aDictionary=====
====import: aDictionary====


나를 이용해 컴파일한 클래스에 주어진 바인딩을 환경으로 가져오라.
나를 이용해 컴파일한 클래스에 주어진 바인딩을 환경으로 가져오라.


=====removeSharedPool: aDictionary=====
====removeSharedPool: aDictionary====


직접 풀(direct pool) 리스트에서 aDictionary를 제거하라.
직접 풀(direct pool) 리스트에서 aDictionary를 제거하라.


=====sharedPoolDictionaries=====
====sharedPoolDictionaries====


내 클래스를 위해 가져온 공유 풀(이름이 아닌)을 응답하라.  
내 클래스를 위해 가져온 공유 풀(이름이 아닌)을 응답하라.  
Line 80: Line 78:




====AbstractNamespace: 복사하기====
===AbstractNamespace: 복사하기===


=====copyEmpty: newSize=====
====copyEmpty: newSize====


크기가 newSize인 수신자의 빈 복사본을 응답하라.  
크기가 newSize인 수신자의 빈 복사본을 응답하라.  


=====whileCurrentDo: aBlock=====
====whileCurrentDo: aBlock====


현재 수신자로 설정된 네임스페이스로 aBlock을 평가하라. 평가 결과를 응답하라.  
현재 수신자로 설정된 네임스페이스로 aBlock을 평가하라. 평가 결과를 응답하라.  
Line 92: Line 90:




====AbstractNamespace: 네임스페이스 계층구조====
===AbstractNamespace: 네임스페이스 계층구조===


=====addSubspace: aSymbol=====
====addSubspace: aSymbol====


aSymbol로 명명된 네임스페이스를 생성하고, 수신자의 서브스페이스로 추가한 후 그것을 응답하라.  
aSymbol로 명명된 네임스페이스를 생성하고, 수신자의 서브스페이스로 추가한 후 그것을 응답하라.  


=====allSubassociationsDo: aBlock=====
====allSubassociationsDo: aBlock====


수신자의 각 서브스페이스 내에서 모든 연관마다 aBlock을 한 번씩 호출하라.
수신자의 각 서브스페이스 내에서 모든 연관마다 aBlock을 한 번씩 호출하라.


=====allSubspaces=====
====allSubspaces====


Set에서 수신자의 직접 및 간접 서브스페이스를 응답하라.  
Set에서 수신자의 직접 및 간접 서브스페이스를 응답하라.  


=====allSubspacesDo: aBlock=====
====allSubspacesDo: aBlock====


모든 직접 및 간접 서브스페이스에 대해 aBlock을 호출하라.  
모든 직접 및 간접 서브스페이스에 대해 aBlock을 호출하라.  


=====allSuperspacesDo: aBlock=====
====allSuperspacesDo: aBlock====


수신자의 슈퍼스페이스마다 aBlock을 한 번씩 호출하라.  
수신자의 슈퍼스페이스마다 aBlock을 한 번씩 호출하라.  


=====includesClassNamed: aString=====
====includesClassNamed: aString====


수신자 또는 그 슈퍼스페이스가 주어진 클래스를 포함하는지 여부를 응답하라-해당 메서드는 (#includesKey: 와 달리) aString이 intern 되도록 요구하지 않고, (#includesGlobalNamed:와 달리) 전역 변수가 클래스 객체인 경우 true를 리턴하기만 한다는 사실을 주목한다.
수신자 또는 그 슈퍼스페이스가 주어진 클래스를 포함하는지 여부를 응답하라-해당 메서드는 (#includesKey: 와 달리) aString이 intern 되도록 요구하지 않고, (#includesGlobalNamed:와 달리) 전역 변수가 클래스 객체인 경우 true를 리턴하기만 한다는 사실을 주목한다.


=====includesGlobalNamed: aString=====
====includesGlobalNamed: aString====


수신자 또는 그 슈퍼스페이스 중 어떤 것이 주어진 키를 포함하는지 여부를 응답하라-해당 메서드는 (#includesKey: 와 달리) aString이 intern 되도록 요구하지 않지만, (#includesClassNamed:와 달리) 전역 변수가 클래스 객체가 아닌 경우에도 true를 리턴한다는 사실을 주목한다.  
수신자 또는 그 슈퍼스페이스 중 어떤 것이 주어진 키를 포함하는지 여부를 응답하라-해당 메서드는 (#includesKey: 와 달리) aString이 intern 되도록 요구하지 않지만, (#includesClassNamed:와 달리) 전역 변수가 클래스 객체가 아닌 경우에도 true를 리턴한다는 사실을 주목한다.  


=====removeSubspace: aSymbol=====
====removeSubspace: aSymbol====


aSymbol로 명명된 나의 서브스페이스를 계층구조에서 제거하라.  
aSymbol로 명명된 나의 서브스페이스를 계층구조에서 제거하라.  


=====selectSubspaces: aBlock=====
====selectSubspaces: aBlock====


aBlock을 충족시키는 수신자의 서브스페이스 Set를 리턴하라.  
aBlock을 충족시키는 수신자의 서브스페이스 Set를 리턴하라.  


=====selectSuperspaces: aBlock=====
====selectSuperspaces: aBlock====


aBlock을 충족시키는 수신자의 슈퍼스페이스 Set를 리턴하라.  
aBlock을 충족시키는 수신자의 슈퍼스페이스 Set를 리턴하라.  


=====siblings=====
====siblings====


수신자와 같은 네임스페이스의 다른 자식들을 모두 응답하라.  
수신자와 같은 네임스페이스의 다른 자식들을 모두 응답하라.  


=====siblingsDo: aBlock=====
====siblingsDo: aBlock====


다른 루트 네임스페이스마다 aBlock을 한 번씩 평가하여 네임스페이스를 매개변수로서 전달하라.
다른 루트 네임스페이스마다 aBlock을 한 번씩 평가하여 네임스페이스를 매개변수로서 전달하라.


=====subspaces=====
====subspaces====


수신자의 직접 서프스페이스를 응답하라.  
수신자의 직접 서프스페이스를 응답하라.  


=====subspacesDo: aBlock=====
====subspacesDo: aBlock====


모든 직접 서브스페이스에 aBlock을 호출하라.  
모든 직접 서브스페이스에 aBlock을 호출하라.  


=====superspace=====
====superspace====


수신자의 슈퍼스페이스를 응답하라.  
수신자의 슈퍼스페이스를 응답하라.  


=====superspace: aNamespace=====
====superspace: aNamespace====


수신자의 슈퍼스페이스가 'aNamespace' 가 되도록 설정하라. 또한 수신자를 그것의 서브스페이스로서 추가하라.  
수신자의 슈퍼스페이스가 'aNamespace' 가 되도록 설정하라. 또한 수신자를 그것의 서브스페이스로서 추가하라.  


=====withAllSubspaces=====
====withAllSubspaces====


직접 및 간접 서브스페이스와 함께 수신자를 포함하는 Set를 응답하라.  
직접 및 간접 서브스페이스와 함께 수신자를 포함하는 Set를 응답하라.  


=====withAllSubspacesDo: aBlock=====
====withAllSubspacesDo: aBlock====


수신자와 모든 직접 및 간접 서브클래스에 대해 aBlock을 호출하라.  
수신자와 모든 직접 및 간접 서브클래스에 대해 aBlock을 호출하라.  
Line 168: Line 166:




====AbstractNamespace: 슈퍼스페이스 오버라이드====
===AbstractNamespace: 슈퍼스페이스 오버라이드===


=====inheritedKeys=====
====inheritedKeys====


수신자와 그 슈퍼스페이스 내에서 모든 키의 Set를 응답하라.  
수신자와 그 슈퍼스페이스 내에서 모든 키의 Set를 응답하라.  


=====set: key to: newValue=====
====set: key to: newValue====


newValue 를 'key'에서 명시한 대로 명명된 변수로 할당하라. 해당 메서드는 새 변수를 정의하지 않을 것이다; 대신 키를 찾을 수 없다면 슈퍼스페이스에서 찾고, 어떤 슈퍼스페이스에서도 변수를 찾을 수 없을 경우 오류를 발생시킨다. newValue를 응답하라.  
newValue 를 'key'에서 명시한 대로 명명된 변수로 할당하라. 해당 메서드는 새 변수를 정의하지 않을 것이다; 대신 키를 찾을 수 없다면 슈퍼스페이스에서 찾고, 어떤 슈퍼스페이스에서도 변수를 찾을 수 없을 경우 오류를 발생시킨다. newValue를 응답하라.  


=====set: key to: newValue ifAbsent: aBlock=====
====set: key to: newValue ifAbsent: aBlock====


newValue 를 'key'에서 명시한 대로 명명된 변수로 할당하라. 해당 메서드는 새 변수를Assign 정의하지 않을 것이다; 대신 키를 찾을 수 없다면 슈퍼스페이스에서 찾고, 찾을 수 없다면 aBlock을 평가할 것이다. newValue를 응답하라.
newValue 를 'key'에서 명시한 대로 명명된 변수로 할당하라. 해당 메서드는 새 변수를Assign 정의하지 않을 것이다; 대신 키를 찾을 수 없다면 슈퍼스페이스에서 찾고, 찾을 수 없다면 aBlock을 평가할 것이다. newValue를 응답하라.
Line 186: Line 184:




====AbstractNamespace: 인쇄하기====
===AbstractNamespace: 인쇄하기===


=====name=====
====name====


수신자명을 응답하라.  
수신자명을 응답하라.  


=====name: aSymbol=====
====name: aSymbol====


수신자명을 aSymbol로 변경하라.  
수신자명을 aSymbol로 변경하라.  


=====nameIn: aNamespace=====
====nameIn: aNamespace====


현재 네임스페이스가 aNamespace일 때 수신자로 컴파일하는 스몰토크 코드를 응답하라.  
현재 네임스페이스가 aNamespace일 때 수신자로 컴파일하는 스몰토크 코드를 응답하라.  


=====printOn: aStream=====
====printOn: aStream====


수신자의 표현을 인쇄하라.  
수신자의 표현을 인쇄하라.  


=====storeOn: aStream=====
====storeOn: aStream====


수신자로 컴파일하는 스몰토크 코드를 보관하라.  
수신자로 컴파일하는 스몰토크 코드를 보관하라.  
Line 210: Line 208:




====AbstractNamespace: 검사하기====
===AbstractNamespace: 검사하기===


=====isNamespace=====
====isNamespace====


'true'를 응답하라.  
'true'를 응답하라.  


=====isSmalltalk=====
====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: 컴파일하기

addSharedPool: aDictionary

나를 이용해 컴파일한 클래스에 주어진 바인딩을 환경으로 가져오라 (import).

import: aDictionary

나를 이용해 컴파일한 클래스에 주어진 바인딩을 환경으로 가져오라.

removeSharedPool: aDictionary

직접 풀(direct pool) 리스트에서 aDictionary를 제거하라.

sharedPoolDictionaries

내 클래스를 위해 가져온 공유 풀(이름이 아닌)을 응답하라.


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'를 응답하라.


Notes