SqueakByExample:3.3: Difference between revisions

From 흡혈양파의 번역工房
Jump to navigation Jump to search
(SBE 메세지보내기 페이지 추가)
 
(용어수정)
 
(12 intermediate revisions by the same user not shown)
Line 3: Line 3:
스퀵에는 3가지 종류의 메시지가 있습니다.
스퀵에는 3가지 종류의 메시지가 있습니다.


# 단항 메시지(Unary messages)는 인수를 취하지 않습니다. 1 factorial은 메시지 factorial을 오브젝트 1에 보냅니다.
# ''단항'' 메세지는 인자를 취하지 않습니다. 1 factorial은 메시지 factorial 을 1 이라는 객체에 보냅니다.
# 바이너리 메시지(Binary messages)는 정확히 하나의 인수를 취합니다. 1+2는 인수 2와 함께 메시지 +를 오브젝트 1에 보냅니다.
# ''이항'' 메시지는 정확히 하나의 인자를 취합니다. 1+2는 인자 2와 함께 메시지 + 를 1이라는 객체에 보냅니다.
# 키워드 메시지는 임시 인수 숫자를 취합니다. 2 raisedTo:6 modulo: 10은 메시지 선택자(the message selector) raisedTo:modulo:와 인수 6과 10으로 구성된 메시지를 오브젝트 2에 보냅니다.  
# ''키워드'' 메시지는 임시로 여러 개의 인자를 취합니다. '''2 raisedTo:6 modulo: 10'''은 메시지 셀렉터 raisedTo:modulo:와 인자 6과 10으로 구성된 메시지를 2라는 객체에 보냅니다.  


단항 메시지 선택자(Unary message selectors)는 알파벳 문자로 구성되어 있으며, 소문자로 시작합니다.


바이너리메시지선택자(Binary message selectors)는 다음 세트의 하나 또는 그 이상의 문자로 구성되어 있습니다:
단항 메시지 셀렉터는 알파벳-숫자 문자로 구성되어 있으며, 소문자로 시작합니다.
 
이항 메시지 셀렉터는 다음 집합의 하나 이상의 문자로 이루어져 있습니다:


<syntaxhighlight lang="smalltalk">
<syntaxhighlight lang="smalltalk">
+ -- / \ * _ < > = @ % | & ? ,
+ - / \ * _ < > = @ % | & ? ,
</syntaxhighlight>
</syntaxhighlight>


키워드 메시지선택자(Keyword messageselectors)는 각 키워드가 소문자로 시작되며 콜론으로 끝나는 알파벳 키워드의 시리즈로 구성됩니다.
 
단항 메시지는 가장 높은 우선권을 갖고 있으며, 그 다음 바이너리 메시지들이며, 마지막으로 키워드 메시지 순으로 우선권을 갖고 있으므로:
키워드 메시지 셀렉터는 소문자로 시작하며 콜론으로 끝나는 알파벳 숫자 키워드의 모음으로 구성되어 있습니다.
 
단항 메시지는 가장 높은 우선순위를 가지고 있으며, 그 다음 이항 메시지고, 마지막이 키워드 메시지 입니다. 따라서:


<syntaxhighlight lang="smalltalk">
<syntaxhighlight lang="smalltalk">
2 raisedTo: 1 + 3 factorial 128
2 raisedTo: 1 + 3 factorial 128
</syntaxhighlight>
</syntaxhighlight>


(먼저 우리는 factorial을 3에 보내고, +6을 1로 보낸다음, raisedTo:7을 2에 보냅니다.) 먼저 배운, 기호 expression → result 를 표현식 평가의 결과를 보여주기 위해 사용한다는 것을 상기해 봅니다. 




(먼저 우리는 factorial을 3에 보내고, +6을 1로 보낸다음, raisedTo:7을 2에 보냅니다.<ref name="도움말1">해당되는 문장을 조금 더 자세히 분석한 내용은 http://ta.onionmixer.net/wordpress/?p=146 이곳을 참고하시면 됩니다.</ref>) 앞서 배운, 기호 expression ⇒ result 를 수식 계산 결과를 보여주기 위해 사용한다는 것을 상기해 주시기 바랍니다.


 
우선 순위에 따라, 처리는 엄격하게 왼쪽에서 오른쪽으로 진행합니다. 따라서 아래 계산식의 결과는
우선권 외에는, 평가는 왼쪽에서 엄격히 오른쪽으로 기록됩니다. 그러므로 아래처럼 됩니다.


<syntaxhighlight lang="smalltalk">
<syntaxhighlight lang="smalltalk">
1 + 2 * 3 9
1 + 2 * 3 9
</syntaxhighlight>
</syntaxhighlight>


7이 아닙니다. 괄호는 평가의 순서를 대체하기 위해 사용되어야 합니다:
7이 아닙니다. 계산의 순서를 바꾸려면 괄호를 사용해야 합니다:<ref name="도움말2">raisedTo: 같은 셀렉터의 경우는 연산자보다 우선순위가 뒤로 밀립니다. 일반적인 사칙연산셀렉터가 우선순위가 높은데 다른예의 factorial의 경우는 3이라는 객체에 대한 단항셀렉터이기때문에 객체 단위가 하나로 잡혀서 우선적으로 계산되는 결과가 나오는겁니다. 3 factorial은 3을 그대로 전달하는것같은 하나의 단위가 된다는 의미죠.</ref>


<syntaxhighlight lang="smalltalk">
<syntaxhighlight lang="smalltalk">
1 + (2 * 3) 7
1 + (2 * 3) 7
</syntaxhighlight>
</syntaxhighlight>


메시지 보내기는 구두점과 세미콜론으로 구성될 수 있습니다. 표현식의 기간 구별 시퀀스는 시리즈에서, 스테이트먼트(문장, statement)로서 교대로 각 표현식이 평가 되는 원인을 제공합니다 
 
 
메시지 보내기는 마침표와 세미콜론으로 작성합니다. 마침표로 구분한 구문의 순차 배치는 ''선언문''과 같이 개별로 나뉘어진 구문을 순차적으로 처리하도록 합니다.


<syntaxhighlight lang="smalltalk">
<syntaxhighlight lang="smalltalk">
Line 47: Line 51:
</syntaxhighlight>
</syntaxhighlight>


이것은 cr을 Transcript 오브젝트에 보내고, show: 'hello world'에 보낸다음, 마지막으로 다른 cr에 보낼 것입니다.  
위의 코드는 cr 을 Transcript 객체로 보낸 후, show: 'hello world'에 보내고, 마지막으로 다른 cr을 보냅니다.
메시지의 시리즈가 동일한 수신자에게 보내지고 있을 때, 이 시리즈는 케스케이드로서 좀더 간결하게 표현될 수 있습니다. 수신자는 단지 한번 구체적으로 지정되며, 메시지의 시퀀스는 세미콜론으로 분리됩니다:
 
여러가지 메시지를 동일한 수신자로 보내고 있을 때, 일련의 과정들은 종속 구조와 같이 더욱 간결하게 표현될 수 있습니다. 수신자는 한 번 만 구체적으로 지정하며, 메시지들의 각 시퀀스는 세미콜론으로 구분합니다:


<syntaxhighlight lang="smalltalk">
<syntaxhighlight lang="smalltalk">
Line 56: Line 61:
</syntaxhighlight>
</syntaxhighlight>


이것은 앞전의 예와 정확히 동일한 효과를 갖습니다.
이것은 앞의 예제와 정확히 같은 결과를 냅니다.
 
 


==Notes==
==Notes==

Latest revision as of 07:44, 7 June 2013

메시지 보내기

스퀵에는 3가지 종류의 메시지가 있습니다.

  1. 단항 메세지는 인자를 취하지 않습니다. 1 factorial은 메시지 factorial 을 1 이라는 객체에 보냅니다.
  2. 이항 메시지는 정확히 하나의 인자를 취합니다. 1+2는 인자 2와 함께 메시지 + 를 1이라는 객체에 보냅니다.
  3. 키워드 메시지는 임시로 여러 개의 인자를 취합니다. 2 raisedTo:6 modulo: 10은 메시지 셀렉터 raisedTo:modulo:와 인자 6과 10으로 구성된 메시지를 2라는 객체에 보냅니다.


단항 메시지 셀렉터는 알파벳-숫자 문자로 구성되어 있으며, 소문자로 시작합니다.

이항 메시지 셀렉터는 다음 집합의 하나 이상의 문자로 이루어져 있습니다:

+ - / \ * _ < > = @ % | & ? ,


키워드 메시지 셀렉터는 소문자로 시작하며 콜론으로 끝나는 알파벳 숫자 키워드의 모음으로 구성되어 있습니다.

단항 메시지는 가장 높은 우선순위를 가지고 있으며, 그 다음 이항 메시지고, 마지막이 키워드 메시지 입니다. 따라서:

2 raisedTo: 1 + 3 factorial  128


(먼저 우리는 factorial을 3에 보내고, +6을 1로 보낸다음, raisedTo:7을 2에 보냅니다.[1]) 앞서 배운, 기호 expression ⇒ result 를 수식 계산 결과를 보여주기 위해 사용한다는 것을 상기해 주시기 바랍니다.

우선 순위에 따라, 처리는 엄격하게 왼쪽에서 오른쪽으로 진행합니다. 따라서 아래 계산식의 결과는

1 + 2 * 3  9

7이 아닙니다. 계산의 순서를 바꾸려면 괄호를 사용해야 합니다:[2]

1 + (2 * 3)  7


메시지 보내기는 마침표와 세미콜론으로 작성합니다. 마침표로 구분한 구문의 순차 배치는 선언문과 같이 개별로 나뉘어진 구문을 순차적으로 처리하도록 합니다.

Transcript cr.
Transcript show: 'hello world'.
Transcript cr

위의 코드는 cr 을 Transcript 객체로 보낸 후, show: 'hello world'에 보내고, 마지막으로 다른 cr을 보냅니다.

여러가지 메시지를 동일한 수신자로 보내고 있을 때, 일련의 과정들은 종속 구조와 같이 더욱 간결하게 표현될 수 있습니다. 수신자는 한 번 만 구체적으로 지정하며, 메시지들의 각 시퀀스는 세미콜론으로 구분합니다:

Transcript cr;
  show: 'hello world';
  cr

이것은 앞의 예제와 정확히 같은 결과를 냅니다.


Notes

  1. 해당되는 문장을 조금 더 자세히 분석한 내용은 http://ta.onionmixer.net/wordpress/?p=146 이곳을 참고하시면 됩니다.
  2. raisedTo: 같은 셀렉터의 경우는 연산자보다 우선순위가 뒤로 밀립니다. 일반적인 사칙연산셀렉터가 우선순위가 높은데 다른예의 factorial의 경우는 3이라는 객체에 대한 단항셀렉터이기때문에 객체 단위가 하나로 잡혀서 우선적으로 계산되는 결과가 나오는겁니다. 3 factorial은 3을 그대로 전달하는것같은 하나의 단위가 된다는 의미죠.