GnuSmalltalkUsersGuide:BaseChapter 001

From 흡혈양파의 번역工房
Revision as of 15:22, 20 January 2014 by Onionmixer (talk | contribs) (GSUG AbstractNamespace 페이지 추가)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
제 1 장. 기반 클래스

기반 클래스

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