SqueakByExample:4.2: Difference between revisions
Onionmixer (talk | contribs) (이진 > 이항 으로 수정) |
Onionmixer (talk | contribs) (번역수정) |
||
(6 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== | ==세 종류의 메시지== | ||
스몰토크는 | 스몰토크는 메시지가 전송되는 순서를 결정하기 위해 메시지를 몇가지 간단한 규칙으로 정의합니다. 이러한 규칙들은 세 종류의 메시지구분에 대한 차이를 기반으로 합니다: | ||
* ''단항 메시지''는 어떤 정보도 갖고 있지 않은 | * ''단항 메시지''는 어떤 정보도 갖고 있지 않은 오브젝트에게 발송한 메시지입니다. 예를 들어 '''3 factorial'''에서, '''factorial'''은 단항 메시지 입니다. | ||
* ''이항 메시지''는 연산자들(종종 산술적)로 구성되어 있습니다. 그 연산자들은 이항(양쪽에 인수가 필요한)이며, 그 이유는 항상 두 개의 | * ''이항 메시지''는 연산자들(종종 산술적)로 구성되어 있습니다. 그 연산자들은 이항(양쪽에 인수가 필요한)이며, 그 이유는 이항메세지는 항상 두 개의 오브젝트, 그리고 수신자와 인자 오브젝트등에 관여하기 때문입니다. 예를 들면, 10 + 20 에서 +는 인수 20과 함께 수신자 10에 발송된 이항 메시지 입니다. | ||
* ''키워드 메시지''는 한 각각 콜론(:)으로 끝나며 한 개의 인수를 받는 한 개 또는 그 이상의 키워드로 구성됩니다. 예를 들면, anArray at: 1 put: 10 에서, 키워드 at:은 인수 1을 취하며, 키워드 put:은 인수 10을 취합니다. | * ''키워드 메시지''는 한 각각 콜론(:)으로 끝나며 한 개의 인수를 받는 한 개 또는 그 이상의 키워드로 구성됩니다. 예를 들면, anArray at: 1 put: 10 에서, 키워드 at:은 인수 1을 취하며, 키워드 put:은 인수 10을 취합니다. | ||
===단항 메시지=== | ===단항 메시지=== | ||
단항 메시지는 어떤 | 단항 메시지는 어떤 인자도 요구하지 않는 메시지 입니다. 단항 메시지는 receiver messageName 의 문법구조를 따릅니다. 이런경우에 셀렉터는 그 뒤에 문자(인수)가 이어지지 않게 만들어져 있습니다. (예를 들면, 계승(factorial), 열기(open), 클래스(class)등) | ||
{| style="border: 1px solid black;" | {| style="border: 1px solid black;" | ||
Line 23: | Line 25: | ||
|true not||⇒ false | |true not||⇒ false | ||
|- | |- | ||
|Object class||⇒ | |Object class||⇒ 오브젝트 클래스 "오브젝트의 클래스가 오브젝트 클래스입니다 (!)" | ||
|} | |} | ||
<center>{{HighlightDoubleBox|단항 메시지는 어떤 | <center>{{HighlightDoubleBox|단항 메시지는 어떤 인자도 요구하지 않는 메시지 입니다. 단항 메시지는 receiver '''selector''' 의 문법구조로 되어 있습니다}}</center> | ||
===이항 메시지 | ===이항 메시지=== | ||
이항 메시지는 정확히 하나의 인수를 | 이항 메시지는 정확히 하나의 인수를 필요로 하고 메세지의 선택자가 : +, --, *,/, &, =, >, |, <, , 그리고 @ 등과 같은 분류에서 가져온 하나 이상의 문자가 붙어오도록 만들어져 있는 메시지입니다: -- 은 문장 해석 양식에 허용되지 않습니다. | ||
{| style="border: 1px solid black;" | {| style="border: 1px solid black;" | ||
Line 44: | Line 47: | ||
|4 <= 3||⇒ false | |4 <= 3||⇒ false | ||
|- | |- | ||
|(4/3) * 3 = 4||⇒ true " | |(4/3) * 3 = 4||⇒ true "등식은 이항 메시지이며 분수 표현은 정확합니다" | ||
|- | |- | ||
|(3/4) == (3/4)||⇒ false " | |(3/4) == (3/4)||⇒ false "두개의 동일한 분수는 같은 객체가 아닙니다" | ||
|} | |} | ||
<center>{{HighlightDoubleBox|이항 메시지는 정확히 하나의 인수를 요구하고 | <center>{{HighlightDoubleBox|이항 메시지는 정확히 하나의 인수를 요구하고 그의 선택자가 : +, --, *,/, &, =, >, |, <, , 그리고 @ 등과 같은 분류에서 가져온, 하나 또는 그 이상의 문자의 연속으로 만들어져 있는 메시지입니다. 이항 메시지는 receiver '''selector''' argument 의 문법구조로 되어있습니다.}}</center> | ||
===키워드 메시지=== | ===키워드 메시지=== | ||
키워드 | 키워드 메세지는 각각 콜론으로 끝나는 셀렉터와 그에 따르는 한개 또는 복수의 인자로 구성된 메세지입니다. 키워드 메시지는 다음의 문법구조로 되어있습니다: '''receiver selectorWordOne: argument-One wordTwo: argumentTwo''' | ||
키워드는 따로따로 인수를 취합니다. 그러므로 r:g:b:는 3 개의 인수를 가진 메서드이며, playFileNamed: 와 at: 은 1개씩의 인수를 가진 메서드고, at:put:는 2 개의 인수를 가진 메서드 입니다. color 클래스로 인스턴스를 만들면, Color r:1 g:0 b:0 에서와 같이 색상을 빨강으로 만드는 메서드 r:g:b: 을 사용할 수 있습니다. :(콜론) 은 셀렉터의 일부임을 주의합니다. | |||
<center>{{HighlightDoubleBox|자바 또는 C++에서, 스몰트크 메서드 불러오기 | <center>{{HighlightDoubleBox|자바 또는 C++에서, 스몰트크 메서드 불러오기. Color r: 1 g: 0 b: 0를 Color.rgb(1,0,0)로 작성할 수 있습니다.}}</center> | ||
<syntaxhighlight lang="smalltalk"> | <syntaxhighlight lang="smalltalk"> | ||
1 to: 10 | 1 to: 10 ⇒ (1 to: 10) "인터벌을 만듭니다" | ||
Color r: 1 g: 0 b: 0 | Color r: 1 g: 0 b: 0 ⇒ Color red "새 색상을 만듭니다" | ||
12 between: 8 and: 15 | 12 between: 8 and: 15 ⇒ true | ||
nums := Array newFrom: (1 to: 5). | nums := Array newFrom: (1 to: 5). | ||
nums at: 1 put: 6. | nums at: 1 put: 6. | ||
nums | nums ⇒ #(6 2 3 4 5) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<center>{{HighlightDoubleBox|키워드 메시지는 한 개 | <center>{{HighlightDoubleBox|키워드 메시지는 한 개 이상의 인자를 요구합니다. 그 인수들의 선택자는 각각 콜론 (:) 으로 끝나는 한 개 또는 그 이상의 키워드들로 구성됩니다. 키워드 메시지는 다음의 문법구조로 되어있습니다:<br>receiver '''selectorWordOne:''' argument-One '''wordTwo:''' argumentTwo}}</center> | ||
Revision as of 13:01, 3 March 2013
세 종류의 메시지
스몰토크는 메시지가 전송되는 순서를 결정하기 위해 메시지를 몇가지 간단한 규칙으로 정의합니다. 이러한 규칙들은 세 종류의 메시지구분에 대한 차이를 기반으로 합니다:
- 단항 메시지는 어떤 정보도 갖고 있지 않은 오브젝트에게 발송한 메시지입니다. 예를 들어 3 factorial에서, factorial은 단항 메시지 입니다.
- 이항 메시지는 연산자들(종종 산술적)로 구성되어 있습니다. 그 연산자들은 이항(양쪽에 인수가 필요한)이며, 그 이유는 이항메세지는 항상 두 개의 오브젝트, 그리고 수신자와 인자 오브젝트등에 관여하기 때문입니다. 예를 들면, 10 + 20 에서 +는 인수 20과 함께 수신자 10에 발송된 이항 메시지 입니다.
- 키워드 메시지는 한 각각 콜론(:)으로 끝나며 한 개의 인수를 받는 한 개 또는 그 이상의 키워드로 구성됩니다. 예를 들면, anArray at: 1 put: 10 에서, 키워드 at:은 인수 1을 취하며, 키워드 put:은 인수 10을 취합니다.
단항 메시지
단항 메시지는 어떤 인자도 요구하지 않는 메시지 입니다. 단항 메시지는 receiver messageName 의 문법구조를 따릅니다. 이런경우에 셀렉터는 그 뒤에 문자(인수)가 이어지지 않게 만들어져 있습니다. (예를 들면, 계승(factorial), 열기(open), 클래스(class)등)
89 sin | ⇒ 0.860069405812453 |
3 sqrt | ⇒ 1.732050807568877 |
Float pi | ⇒ 3.141592653589793 |
'blop' size | ⇒ 4 |
true not | ⇒ false |
Object class | ⇒ 오브젝트 클래스 "오브젝트의 클래스가 오브젝트 클래스입니다 (!)" |
이항 메시지
이항 메시지는 정확히 하나의 인수를 필요로 하고 메세지의 선택자가 : +, --, *,/, &, =, >, |, <, , 그리고 @ 등과 같은 분류에서 가져온 하나 이상의 문자가 붙어오도록 만들어져 있는 메시지입니다: -- 은 문장 해석 양식에 허용되지 않습니다.
100@100 | ⇒ 100@100 "creates a Point object" |
3+4 | ⇒ 7 |
10 -- 1 | ⇒ 9 |
4 <= 3 | ⇒ false |
(4/3) * 3 = 4 | ⇒ true "등식은 이항 메시지이며 분수 표현은 정확합니다" |
(3/4) == (3/4) | ⇒ false "두개의 동일한 분수는 같은 객체가 아닙니다" |
키워드 메시지
키워드 메세지는 각각 콜론으로 끝나는 셀렉터와 그에 따르는 한개 또는 복수의 인자로 구성된 메세지입니다. 키워드 메시지는 다음의 문법구조로 되어있습니다: receiver selectorWordOne: argument-One wordTwo: argumentTwo
키워드는 따로따로 인수를 취합니다. 그러므로 r:g:b:는 3 개의 인수를 가진 메서드이며, playFileNamed: 와 at: 은 1개씩의 인수를 가진 메서드고, at:put:는 2 개의 인수를 가진 메서드 입니다. color 클래스로 인스턴스를 만들면, Color r:1 g:0 b:0 에서와 같이 색상을 빨강으로 만드는 메서드 r:g:b: 을 사용할 수 있습니다. :(콜론) 은 셀렉터의 일부임을 주의합니다.
1 to: 10 ⇒ (1 to: 10) "인터벌을 만듭니다"
Color r: 1 g: 0 b: 0 ⇒ Color red "새 색상을 만듭니다"
12 between: 8 and: 15 ⇒ true
nums := Array newFrom: (1 to: 5).
nums at: 1 put: 6.
nums ⇒ #(6 2 3 4 5)
receiver selectorWordOne: argument-One wordTwo: argumentTwo