SqueakByExample:3.3
메시지 보내기
스퀵에는 3가지 종류의 메시지가 있습니다.
- Unary messages(단항메세지)는 인수를 취하지 않습니다. 1 factorial은 메시지 factorial을 오브젝트 1에 보냅니다.
- Binary messages(이항메세지)는 정확히 하나의 인수를 취합니다. 1+2는 인수 2와 함께 메시지 +를 오브젝트 1에 보냅니다.
- Keyword messages(키워드메세지)는 임시 인수 숫자를 취합니다. 2 raisedTo:6 modulo: 10 은 메시지 선택자(the message selector) raisedTo:modulo:와 인수 6과 10으로 구성된 메시지를 오브젝트 2에 보냅니다.
단항 메시지 선택자(Unary message selectors)는 알파벳 문자로 구성되어 있으며, 소문자로 시작합니다.
이항 메시지 선택자(Binary message selectors)는 다음 세트의 하나 또는 그 이상의 문자로 구성되어 있습니다:
+ - / \ * _ < > = @ % | & ? ,
키워드 메시지선택자(Keyword messageselectors)는 각 키워드가 소문자로 시작되며 콜론으로 끝나는 알파벳 키워드의 시리즈로 구성됩니다.
단항 메시지는 가장 높은 우선권을 갖고 있으며, 그 다음 이항 메시지들이며, 마지막으로 키워드 메시지 순으로 우선권을 갖고 있으므로:
2 raisedTo: 1 + 3 factorial ⇒ 128
(먼저 우리는 factorial을 3에 보내고, +6을 1로 보낸다음, raisedTo:7을 2에 보냅니다.) 먼저 배운, 기호 expression → result 를 표현식 평가의 결과를 보여주기 위해 사용한다는 것을 상기해 봅니다.
우선권 외에는, 평가는 왼쪽에서 엄격히 오른쪽으로 기록됩니다. 그러므로 아래처럼 됩니다.
1 + 2 * 3 ⇒ 9
7이 아닙니다. 괄호는 평가의 순서를 대체하기 위해 사용되어야 합니다:
1 + (2 * 3) ⇒ 7
메시지 보내기는 구두점과 세미콜론으로 구성될 수 있습니다. 표현식의 기간 구별 시퀀스는 시리즈에서, 스테이트먼트(문장, statement)로서 교대로 각 표현식이 평가 되는 원인을 제공합니다
Transcript cr.
Transcript show: 'hello world'.
Transcript cr
이것은 cr을 Transcript 오브젝트에 보내고, show: 'hello world'에 보낸다음, 마지막으로 다른 cr에 보낼 것입니다.
메시지의 시리즈가 동일한 수신자에게 보내지고 있을 때, 이 시리즈는 케스케이드로서 좀더 간결하게 표현될 수 있습니다. 수신자는 단지 한번 구체적으로 지정되며, 메시지의 시퀀스는 세미콜론으로 분리됩니다:
Transcript cr;
show: 'hello world';
cr
이것은 앞전의 예와 정확히 동일한 효과를 갖습니다.