SqueakByExample:3.2: Difference between revisions

From 흡혈양파의 번역工房
Jump to navigation Jump to search
mNo edit summary
(용어수정)
 
(9 intermediate revisions by the same user not shown)
Line 1: Line 1:
==의사(가짜)-변수==
==가상 변수==


스몰토크에서는, 6개의 예비된 키워드, 또는 의사(가짜)-변수가 있습니다: 그것들은 nil, true, false, self, super, 그리고 thisContext 입니다.
스몰토크에서는, 여섯개의 예약어가 있는데 이를 ''가상 변수<sup>Psudo-valiables</sup>''라고도 합니다: nil, true, false, self, super, thisContext 가 바로 그것입니다. 가상 변수라고 부른 이유는 미리 정의하거나 할당할 수 없기 때문입니다.<ref name="역자주1">미리 정의하거나 할당될 수 없다는건 클래스의 인스턴스가 생성되는 시점에서 자동으로 존재될 수 있기 때문입니다. 새로 값을 할당하거나 하는게 아니라 런타임시에 동적으로 자동으로 할당되기 때문인거죠. 예를 들자면 self의 경우는 인스턴스 내부에서 자신을 가리키는 변수기떄문에 별도로 정의하거나 할 있는게 아니라는 의미입니다.</ref> 코드가 수행되는 중에 self, super, thisContext의 값은 코드를 실행하면서 동적으로 바뀌는 반면에  true, false, nil 은 애초부터 정의되어있는 상수입니다.
이것들은 의사(가짜)-변수(pseudo-variables)라고 부르는데, 이것들은 미리 정의된상태이며 값을 대입할 없기 때문이다. true, false 그리고 nil은 상수지만 코드가 수행되는 중에 self, super 그리고 thisContext 등의 값이 동적으로 다양하게 바뀌게 된다.


'''true'''와 '''false'''는 Boolean클래스의 True와 False의 고유한 인스턴스 입니다. 좀더 세부적인 내용을 보시려면 8장을 보십시오.


'''self'''는 항상 현재 실행중인 메서드의 수신자(receiver)를 참조합니다.
'''true''' 와 '''false''' 는 Boolean 클래스인 True 와 False 의 고유한 인스턴스 입니다. 더 자세한 내용은 8장을 참조하십시오.


'''super'''는 항상 현재 메서드의 수신자를 참조하지만, 여러분이 메시지를 super로 보내면, 메서드 보기(the method-lookup)은 변경되므로, super는 super를 사용하는 메서드를 포함하는 클래스의 수퍼클래스로부터 시작합니다. 좀 더 상세한 내용을 더 보기 원하시면, 5장을 참조하십시오.


'''nil'''은 지정되지 않은 오브젝트 입니다. 이것은 클래스 UndefinedObject의 고유한 인스턴스입니다. 인스턴스 변수, 클래스 변수와 로컬변수는 nil로 초기화됩니다.
'''self''' 는 항상 현재 메서드를 실행 중인 수신자를 참조합니다.
 
 
'''super''' 는 항상 현재 메서드의 수신자를 참조하지만, 메시지를 super로 보내면, 메서드 검색 위치가 바뀌어서, super를 사용하는 메서드를 포함하는 클래스의 super클래스에서 시작합니다. 더 자세한 내용은 5장을 참조하십시오.
 
 
'''nil''' 은 정의하지 않은 오브젝트를 의미합니다. 이것은 클래스 UndefinedObject의 고유한 인스턴스입니다. 인스턴스 변수, 클래스 변수, 지역 변수는 nil로 초기화 합니다.
 
 
'''thisContext''' 는 런타임 시점에서 스택의 최상위 프레임을 나타내는 가상 변수입니다. 다르게 말하자면, 현재 실행 중인 MethodContext 또는 BlockContext를 나타냅니다. thisContext는 보통 대부분의 프로그래머들이 관심을 가지지 않지만, 디버거와 같은 개발 도구를 실행하기 위해 필수적이며, 예외 처리및 계속 실행을 구현하기 위해 사용하기도 합니다.<ref name="역자주2">http://blog.naver.com/PostView.nhn?blogId=tkandrea92&logNo=80013761680&parentCategoryNo=4&viewDate=&currentPage=1&listtype=0 이 부분에 있는 설명이 조금 더 정확하다고 생각됩니다. 현재 실행되고있는 프레임의 주소값. 그러니 디버깅할때 의미가 있겠죠.</ref>
 


'''thisContext'''는 런타임 스택(the run-time stack)의 최고 프레임(the top frame)을 나타내는 가짜 변수입니다. 다른말로 하면, 이것은 현재 실행중인 MethodContext 또는 BlockContext를 나타냅니다. thisContext는 보통 대부분의 프로그래머에게 인기가 없지만, 디버거와 같은 개발 도구를 실행하기 위해 필수적이며, 또한 예외 핸들링/취급(exception handling)과 계속(continuations)을 실행하기 위해 사용됩니다.


==Notes==
==Notes==

Latest revision as of 01:54, 17 September 2013

가상 변수

스몰토크에서는, 여섯개의 예약어가 있는데 이를 가상 변수Psudo-valiables라고도 합니다: nil, true, false, self, super, thisContext 가 바로 그것입니다. 가상 변수라고 부른 이유는 미리 정의하거나 할당할 수 없기 때문입니다.[1] 코드가 수행되는 중에 self, super, thisContext의 값은 코드를 실행하면서 동적으로 바뀌는 반면에 true, false, nil 은 애초부터 정의되어있는 상수입니다.


truefalse 는 Boolean 클래스인 True 와 False 의 고유한 인스턴스 입니다. 더 자세한 내용은 8장을 참조하십시오.


self 는 항상 현재 메서드를 실행 중인 수신자를 참조합니다.


super 는 항상 현재 메서드의 수신자를 참조하지만, 메시지를 super로 보내면, 메서드 검색 위치가 바뀌어서, super를 사용하는 메서드를 포함하는 클래스의 super클래스에서 시작합니다. 더 자세한 내용은 5장을 참조하십시오.


nil 은 정의하지 않은 오브젝트를 의미합니다. 이것은 클래스 UndefinedObject의 고유한 인스턴스입니다. 인스턴스 변수, 클래스 변수, 지역 변수는 nil로 초기화 합니다.


thisContext 는 런타임 시점에서 스택의 최상위 프레임을 나타내는 가상 변수입니다. 다르게 말하자면, 현재 실행 중인 MethodContext 또는 BlockContext를 나타냅니다. thisContext는 보통 대부분의 프로그래머들이 관심을 가지지 않지만, 디버거와 같은 개발 도구를 실행하기 위해 필수적이며, 예외 처리및 계속 실행을 구현하기 위해 사용하기도 합니다.[2]


Notes

  1. 미리 정의하거나 할당될 수 없다는건 클래스의 인스턴스가 생성되는 시점에서 자동으로 존재될 수 있기 때문입니다. 새로 값을 할당하거나 하는게 아니라 런타임시에 동적으로 자동으로 할당되기 때문인거죠. 예를 들자면 self의 경우는 인스턴스 내부에서 자신을 가리키는 변수기떄문에 별도로 정의하거나 할 수 있는게 아니라는 의미입니다.
  2. http://blog.naver.com/PostView.nhn?blogId=tkandrea92&logNo=80013761680&parentCategoryNo=4&viewDate=&currentPage=1&listtype=0 이 부분에 있는 설명이 조금 더 정확하다고 생각됩니다. 현재 실행되고있는 프레임의 주소값. 그러니 디버깅할때 의미가 있겠죠.