SqueakByExample:4.2

From 흡혈양파의 번역工房
Jump to navigation Jump to search

세 종류의 메시지

스몰토크는 메시지가 전송되는 순서를 결정하기 위해 메시지를 몇가지 간단한 규칙으로 정의합니다. 이러한 규칙들은 세 종류의 메시지구분에 대한 차이를 기반으로 합니다:

  • 단항 메시지는 어떤 정보도 갖고 있지 않은 객체에게 발송한 메시지입니다. 예를 들어 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 ⇒ Object 클래스 "Object의 클래스가 Object 클래스입니다 (!)"


단항 메시지는 어떤 인자도 요구하지 않는 메시지 입니다. 단항 메시지는 receiver selector 의 문법구조로 되어 있습니다


이항 메시지

이항 메시지는 정확히 하나의 인자를 필요로 하고 메세지의 선택자가 : +, --, *,/, &, =, >, |, <, , 그리고 @ 등과 같은 분류에서 가져온 하나 이상의 문자가 붙어오도록 만들어져 있는 메시지입니다: -- 은 문장의 해석양식에서 허용되지 않습니다.

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 selector argument 의 문법구조로 되어있습니다.


키워드 메시지

키워드 메세지는 각각 콜론으로 끝나는 셀렉터와 그에 따르는 한개 또는 복수의 인자로 구성된 메세지입니다. 키워드 메시지는 다음의 문법구조로 되어있습니다: 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: 을 사용할 수 있습니다. :(콜론) 은 셀렉터의 일부임을 주의합니다.


자바 또는 C++에서, 스몰트크 메서드 불러오기. Color r: 1 g: 0 b: 0를 Color.rgb(1,0,0)로 작성할 수 있습니다.


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


Notes