GnuSmalltalkUsersGuide:BaseChapter 110

From 흡혈양파의 번역工房
Revision as of 15:26, 27 January 2014 by Onionmixer (talk | contribs) (GSUG MethodContext 체이지 추가)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
MethodContext

MethodContext

네임스페이스 Smalltalk에 정의됨

슈퍼클래스: ContextPart

범주: 언어-구현


나의 인스턴스들은 능동적으로 실행하는 메서드를 표현한다. 그들은 실행 환경에 관한 정보의 다양한 비트를 기록하고, 실행 스택을 포함한다.


MethodContext: 접근하기

home

수신자가 참조하는 MethodContext를 응답하라 (예: 수신자 자체).

isBlock

수신자가 블록 컨텍스트인지 응답하라.

block

isDisabled

수신자가 실제로 끝난 실행을 갖고 있으며, 리턴을 실행 시 건너뛸 것인지를 응답한다. Non-local 리턴이 실행될 때마다 BlockContexts가 체인에서 제거되지만 MethodContexts는 #ensure:block으로부터 non-local 리턴이 있을 경우를 대비해 체인에 남아야 한다.

isEnvironment

해석기가 시작되기 전에도 그에 유효한 실행 환경을 생성하기 위해 GST는 특수 "종료" 메서드를 호출하는 가상 컨텍스트(fake context)를 생성한다. 그러한 컨텍스트는 현재 실행 환경에 대한 마커로 사용할 수 있다. 수신자가 그러한 유형의 컨텍스트인지 여부를 응답하라.

isUnwind

컨텍스트가 non-local 리턴 이후에도 실행을 계속해야 하는지를 응답하라 (블록의 enclosing 메서드로부터 리턴 혹은 ContextPart의 #continue: 메서드로의 호출). 그러한 컨텍스트는 #ensure:에 의해서만 생성된다.

mark

해석기가 시작되기 전에도 그에 유효한 실행 환경을 생성하기 위해 GST는 특수 "종료" 메서드를 호출하는 가상 컨텍스트(fake context)를 생성한다. 해당 메서드를 이용해 #valueWithUnwind에 의해서도 이와 유사한 컨텍스트가 생성된다.

sender

수신자가 전송된 컨텍스트를 리턴하라.


MethodContext: 디버깅하기

isInternalExceptionHandlingContext

수신자가 괄호를 표시할 때 사용자에게 숨겨야 하는 컨텍스트에 해당하는지 응답하라. 그러한 컨텍스트가 괄호에 있는 경우 #exceptionHandlingInternal: attribute: 를 통해 식별되며, 컨텍스트 위의 모든 내용이 내부로 표시된다.

즉, true로 설정되는 속성은 컨텍스트와 그 위의 모든 내용은 숨겨지는 반면 false로 설정된 속성은 컨텍스트 자체를 제외하고 속성 위의 모든 컨텍스트를 숨겨야 함을 의미한다.


MethodContext: 인쇄하기

printOn: aStream

수신자에 대한 표현을 aStream 상에 인쇄하라.


Notes