SqueakByExample:3.3: Difference between revisions

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


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




Line 26: Line 26:




(먼저 우리는 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">
Line 34: Line 35:
</syntaxhighlight>
</syntaxhighlight>


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


<syntaxhighlight lang="smalltalk">
<syntaxhighlight lang="smalltalk">
Line 42: Line 43:




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


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


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


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


<syntaxhighlight lang="smalltalk">
<syntaxhighlight lang="smalltalk">
Line 62: Line 62:


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





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을 그대로 전달하는것같은 하나의 단위가 된다는 의미죠.