SqueakByExample:4.6: Difference between revisions

From 흡혈양파의 번역工房
Jump to navigation Jump to search
(스타일 수정)
(용어수정)
 
(11 intermediate revisions by the same user not shown)
Line 1: Line 1:
==캐스케이드된 메시지(cascaded message)==
==캐스케이드된 메시지==


스몰토크는 세미콜론 (;)을 사용하여 동일한 수신자(receiver)에게 다중 메시지(multiple messages)를 보내기 위한 방법을 제공합니다. 이 방법은 스몰토크 용어로 캐스케이드(the cascade)로 지칭됩니다.
스몰토크는 세미콜론 (;)을 사용하여 동일한 수신자에게 여러개의 메시지를 보낼 수 있는 방법이 있습니다. 이것을 스몰토크 용어로 캐스케이드라고 합니다.




Line 11: Line 11:
|
|
<syntaxhighlight lang="smalltalk">
<syntaxhighlight lang="smalltalk">
Transcript show: 'Squeak
Transcript show: 'Squeak is '.
    is '.
Transcript show: 'fun '.
Transcript show: 'fun '.
Transcript cr.
Transcript cr.
</syntaxhighlight>
</syntaxhighlight>
|is equivalent to:
|왼쪽의 프로그램식은 오른쪽과 같습니다.
|
|
<syntaxhighlight lang="smalltalk">
<syntaxhighlight lang="smalltalk">
Line 26: Line 25:
|}
|}


캐스케이드된 메시지를 수신하는 오브젝트 자체가 메시지 보내기(a message send)의 결과가 될 수 있는 현상에 주목해 주십시오. 사실, 모든 캐스케이드된 메시지의 수신자는 캐스케이드에 관여된 첫 번째 메시지의 수신자 입니다. 다음 예시에서, 첫 번재로 캐스케이드된 메시지 setX:setY는 Point new의 평가 결과로 만들어진 점(point)이고, Point의 평가 결과로 만들어진 점이 아닙니다. 그 다음메시지 isZero는 동일한 수신자에게 발송되었습니다.


캐스케이드된 메시지를 받는 객체는 단순히 객체만 되어야 하는것이 아니라 스스로에게 메시지를 보낸 결과 자체가 대상이 될 수도 있습니다(아래의 경우는 instanse). 결국 모든 캐스케이드된 메시지의 수신자는 캐스케이드에 걸려있는 요소들중 첫번째 메시지를 수신하는 객체(또는 인스턴스)가 됩니다. 다음 예제에서 첫째로 캐스케이드된 메시지인 setX:setY<ref name="역자주1">Point new 자체를 인스턴스를 만들기 위한 하나의 단위로 본다면 setX:setY는 첫번때 캐스케이드 메시지기 맞습니다.</ref>는 Point new의 처리결과로 만들어진 Point이며 Point 자체가 대상이 되는건 아닙니다. 그 다음 메시지 isZero는 동일한 수신자에게 전달되는것을 볼 수 있습니다.


<syntaxhighlight lang="smalltalk">
<syntaxhighlight lang="smalltalk">
Point new setX: 25 setY: 35; isZero ⇒ false
Point new setX: 25 setY: 35; isZero ⇒ false
</syntaxhighlight>
</syntaxhighlight>





Latest revision as of 19:07, 16 September 2013

캐스케이드된 메시지

스몰토크는 세미콜론 (;)을 사용하여 동일한 수신자에게 여러개의 메시지를 보낼 수 있는 방법이 있습니다. 이것을 스몰토크 용어로 캐스케이드라고 합니다.


표현식 Msg1 ; Msg2


Transcript show: 'Squeak is '.
Transcript show: 'fun '.
Transcript cr.
왼쪽의 프로그램식은 오른쪽과 같습니다.
Transcript
  show: 'Squeak is';
  show: 'fun ';
  cr


캐스케이드된 메시지를 받는 객체는 단순히 객체만 되어야 하는것이 아니라 스스로에게 메시지를 보낸 결과 자체가 대상이 될 수도 있습니다(아래의 경우는 instanse). 결국 모든 캐스케이드된 메시지의 수신자는 캐스케이드에 걸려있는 요소들중 첫번째 메시지를 수신하는 객체(또는 인스턴스)가 됩니다. 다음 예제에서 첫째로 캐스케이드된 메시지인 setX:setY[1]는 Point new의 처리결과로 만들어진 Point이며 Point 자체가 대상이 되는건 아닙니다. 그 다음 메시지 isZero는 동일한 수신자에게 전달되는것을 볼 수 있습니다.

Point new setX: 25 setY: 35; isZero  false


Notes

  1. Point new 자체를 인스턴스를 만들기 위한 하나의 단위로 본다면 setX:setY는 첫번때 캐스케이드 메시지기 맞습니다.