SqueakByExample:3.1: Difference between revisions

From 흡혈양파의 번역工房
Jump to navigation Jump to search
mNo edit summary
(주석처리)
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
==문법적 구성요소(Syntactic elements)==
==문법 요소==


표현식들은 다음 건축 블록(building blocks)들로 구성됩니다 (i) 여섯개의 예비된 키워드 또는 가짜 변수들: self, super, nil, true, false, thisContext  
문법은 다음의 구성 요소로 이루어져 있습니다. (i) 여섯개의 준비된 키워드 또는 의사 변수들: self, super, nil, true, false, 그리고 thisContext  
(ii) 숫자, 문자, 문자열, 심볼(symbols) 그리고 배열(array)을 포함한 리터럴 오브젝트입니다(‘리터럴’-프로그램 언어에서 문자열 그 자체가 값을 나타내는 것. 예를 들면 X=‘90’에서 문자열 90은 90이라는 값을 나타내는 리터럴이다:역주)
(ii) 숫자, 문자, 문자열, 심볼 그리고 배열을 포함하는 리터럴 오브젝트<ref name="역자주1">literal - 프로그램 언어에서 문자열 그 자체가 값을 나타내는 것. 예를 들면 X='90' 에서 문자열 90은 90이라는 값을 나타내는 리터럴이다</ref>에 대한 상수 표현식 (iii) 변수 선언, (iv) 할당문, (v) 블록 클로저, (vi) 메시지 입니다.
 
우리는 표 3.1에서 다양한 구문적 구성요소의 예들을 볼 수 있습니다.  


{| style="border: 1px solid black;"
{| style="border: 1px solid black;"
Line 22: Line 20:
|1.5||부동 소수점 수
|1.5||부동 소수점 수
|-
|-
|2.4e7||지수표기법(exponential notation)
|2.4e7||지수 표기법
|-
|-
|$a||문자 ‘a’
|$a||문자 ‘a’
Line 30: Line 28:
|#Hello||심볼 # Hello
|#Hello||심볼 # Hello
|-
|-
|#(1 2 3)||문자/리터럴 배열(a literal array)
|#(1 2 3)||문자/리터럴 배열
|-
|-
|{1. 2. 1+2}||동적 배열
|{1. 2. 1+2}||동적 배열
Line 36: Line 34:
|"a comment"||주석
|"a comment"||주석
|-
|-
|&#166; x y &#166;|| 변수 x y의 공표
|&#166; x y &#166;|| 변수 x y의 선언
|-
|-
|x := 1|| 1을 x에 할당
|x := 1|| 1을 x에 할당
|-
|-
|[ x + y ]|| x y로 평가되는 변수
|[ x + y ]|| x y로 계산하는 변수
|-
|-
|<primitive: 1>||가상머신 프리미티브(primitive) 또는 어노테이션(annotation)
|<primitive: 1>||가상머신 프리미티브 또는 어노테이션
|-
|-
|3 factorial||단항 메시지(unary message)
|3 factorial||단항 메시지
|-
|-
|3+4||바이너리 메시지( binary message)
|3+4||이항 메시지
|-
|-
|2 raisedTo: 6 modulo: 10||키워드 메시지
|2 raisedTo: 6 modulo: 10||키워드 메시지
|-
|-
|↑true||값을 true로 리턴
|↑ true||값을 true로 반환
|-
|-
|Transcript show: ’hello’. Transcript cr (.)||표현식 구별자(.)  (expression separator)
|Transcript show: ’hello’. Transcript cr (.)||수식 구분자(.)  
|-
|-
|Transcript show: ’hello’; cr||메시지 케스케이스 (;)  (message cascade)
|Transcript show: ’hello’; cr||메시지 케스케이드 (;)
|- style="text-align: center;"
|- style="text-align: center;"
!colspan="2" |표 3.1: 간결한 스퀵 구문
!colspan="2" |표 3.1: 간결한 스퀵 구문
|}
|}


===로컬 변수===
표 3.1에서 다양한 문법 요소의 예를 볼 수 있습니다.  
startPoint는 변수 이름 또는 식별자(identifier) 입니다. 관례적으로, 식별자(identifier)는 “캐멀케이스(camelCase)”로 쓰여진 단어들로 구성되어 있습니다. (예를 들면, 대문자로 시작하는 첫 번째 단어를 제외한 각 단어)


===인스턴스 변수===
===지역 변수===
메서드 또는 블록 인수(block argument) 또는 임시 변수의 첫 번째 글자는 반드시 소문자로 기록해야 합니다. 이 소문자는 독자에게 변수가 개별 범위(private scope)를 갖고 있음을 가리킵니다.  
startPoint는 변수 이름 또는 식별자 이름입니다. 관례상, 식별자는 “캐멀케이스(camelCase)”로 단어를 구성합니다 (예를 들면, 각각의 단어는 처음 시작하는 단어를 제외하고 첫 글자를 대문자로 시작합니다).
인스턴스 변수, 메서드, 블록 인자, 임시 변수의 첫 번째 글자는 반드시 소문자여야 합니다. 변수가 전용 범위를 가지고 있음을 독자에게 보여줍니다.


===공유된 변수 (Shared variables)===
===공유 변수===
대문자로 시작되는 식별자(Identifiers)는 글로벌 변수(global variables), 클래스 변수, 딕셔너리(pool dictionary) 또는 클래스 이름입니다. transcript는 글로벌 변수, 클래스 '''TranscriptStream'''인스턴스 입니다.  
대문자로 시작되는 식별자는 전역 변수, 클래스 변수, pool 딕셔너리 또는 클래스 이름입니다. Transcript는 전역 변수이며, '''TranscriptStream'''클래스의 인스턴스 입니다.  


===수신자(The receiver)===
===수신자===
self는 실행중인 현재 메서드 안에 있는 오브젝트와 관련이 있는 키워드입니다.
self는 실행 중인 현재 메서드 안에 있는 오브젝트를 참조하는 키워드입니다.
우리는 이 키워드를 “수신자”(receiver)로 부르겠습니다. 그 이유는 오브젝트는 보통 메서드를 실행하는 원인이 되는 메시지를 수진할 것이기 때문입니다. '''self'''는우리가 이 키워드에 할당을 할 수 없기 때문이 의사(가짜)변수-(pseudo-variable)로 불립니다.   
오브젝트가 보통 실행해야 할 메서드에서 발생한 메시지를 받으므로 이 키워드를 “수신자”라고 합니다. 우리가 '''self'''할당을 할 수 없으므로 의사 변수라고 합니다.   


===정수===
===정수===
스퀵은 42와 같은 보통 10진수 정수 뿐만 아니라, 기수표기법(radix notation)을 제공합니다.
스퀵은 42와 같은 보통 10진수 정수 뿐만 아니라, 기수 표기법도 제공합니다.
2r101은 기수2에서 101이며[예를 들면, 바이너리(binary)], 그것은 10진수 5와 동일합니다.
2r101은 2진수의 101이며[예를 들면, 바이너리], 10진수의 5와 동일합니다.


===부동소수점수(Floating point numbers)===
===부동 소수점 수===
부동소수점수의 10진법 지수(base-ten exponent)로 지정될 수 있습니다: 2.4e7 is 2.4 × 107.
10진 기반 지수와 함께 지정할 수 있습니다: 2.4e7 is 2.4 × 107.
문자. 달러 기호는 리터럴 문자를 소개합니다: $a는 ‘a’를 위한 리터럴입니다. 비 프린팅 문자(non-printing)의 인스턴스는 적합한 이름으로 만든 Chracter space 와 Chracter tab과 같은 메시지를 Character class에 보냄으로써 얻을 수 있습니다.  
 
===문자===
달러 기호는 리터럴 문자임을 의미합니다: $a는 ‘a’에 대한 리터럴입니다. 비 출력 문자의 인스턴스는 적절한 이름으로 만든 Character space 와 Character tab과 같은 적절하게 이름 붙인 메시지를 보내어 Character 클래스에서 비출력 문자에 대한 인스턴스를 가져올 수 있습니다.


===문자열===
===문자열===
작은 따옴표(Single quotes- 혹은 게발톱 따옴표)는 리터럴 문자열(literal string)입니다. 만약 여러분이 따옴표 안에 문자열을 원하신다면, 'G''day' 의 경우와 같이 따옴표를 두 개를 넣으면 됩니다.
작은 따옴표(Single quotes- 혹은 게발톱 따옴표)는 리터럴 문자열을 정의할 때 사용합니다.문자여 ㄹ안에서 따옴펴를 사용하려면, 'G''day' 의 경우와 같이 따옴표를 두 개를 넣으면 됩니다.


===심볼===
===심볼===
심볼은 문자열과 같이, 연속된 문자를 포함합니다. 그럼에도 불구하고, 문자열과 달리, 리터럴 심볼(literal symbol)은 광범위한 고유성이 보장됩니다. 오직 한 개의 심볼 오브젝트 #Hello가 있지만, ‘Hello’ 안에는 여러 개의 문자열 오브젝트가 있을 것입니다.  
문자의 연속 요소를 포함한다는 점에서 문자열과 비슷합니다. 그러나 문자열과 달리, 리터럴 심볼은 전체적으로 유일해야 합니다. 심볼 오브젝트 #Hello는 하나밖에 없지만, 값이 ‘Hello’ 인 여러가지 문자열 오브젝트가 있을 수도 있습니다.  


===컴파일 시간 배열===
===컴파일 시간 배열===
컴파일 시간 배열은 공간-구별 리터럴(space-separated literals)로 둘러싸여 있는 #( )에 의해 정의됩니다. 괄호 내부의 모든 것은 반드시 컴파일 시간 상수이어야 합니다. 예를 들면 #( 27#(true false)abc)는 3개의 구성요소를 가진 리터럴 배열입니다: 정수 27은 두 개의 불리언과 심볼 #abc를 포함한 컴파일 시간 배열입니다.  
컴파일 시간 배열은 #( )와 공백으로 구분한 리터럴로 둘러쌓아 정의합니다. 괄호 안의 모든 요소는 컴파일 시간 상수여야 합니다. 예를 들어, #( 27#(true false)abc)는 세가지 요소의 리터럴 배열입니다: 정수 27, 두 개의 불리언 값을 지닌 컴파일 시간 배열, 그리고 심볼 #abc가 들어있습니다.  


===런타임 배열===
===실행 시간 배열===
중괄호 { }는 런타임(run-time)에서 동적 (dynamic) 배열을 정의합니다.
중괄호 { }는 실행 시간 동안 동적 배열을 정의합니다.
구성요소들은 구두점으로 구분됩니다. 그러므로 {1.2. 1+2}는 구성요소 1, 2를 가진 배열을 정의하고 1+2를 평가한 결과입니다. (중괄호 기호는 스몰토크의 스퀵 언어에 고유한 것입니다. 다른 스몰토크에서는, 동적 배열을 명확하게 만들어야만 합니다.)
요소는 구두점으로 구분한 구문입니다. 따라서 {1.2. 1+2}는 1, 2, 그리고 1+2를 처리한 결과 요소가 들어있는 배열을 정의합니다. (중괄호 기호는 스몰토크의 스퀵 언어에서 고유한 것입니다. 다른 스몰토크에서는 동적 배열을 확실히 만들어야 합니다.)


===주석===
===주석===
주석은 큰 따옴표로 둘러싸입니다. "hello"는 주석이며(comment)이며, 문자열(string)이 아니고, 스퀵 컴파일러에 의해 무시됩니다. 주석은 아마도 다중 라인에 걸쳐 있을 수 있습니다.
주석은 큰 따옴표로 둘러싸여 있습니다. 문자열이 아니라 "hello"는 주석이며, 스퀵 컴파일러가 무시합니다. 주석은 여러 줄에 걸쳐 있을 수 있습니다.


===로컬변수정의===
===지역 변수 정의===
수직 바들은 | | 메서드(또는 블록)안에 하나 또는 더 많은 지역 변수의 정의를 담습니다.
수직 바는 | | 메서드(그리고 블록 내에서도)하나 이상의 변수 선언을 둘러쌉니다.


===할당 (assignment)===
===할당===
'''&#58;=''' 는 오브젝트를 변수에 할당합니다. 여러분은 때때로, ←이 사용된 것을 보게 될 것입니다. 안타깝게도, 이 기호가 ASCII 문자가 아니므로, 특별한 폰트를 사용하고 있지 않다면, 밑줄 표시로 나타날 것입니다. 그러므로 x:=1은 x1 또는 x_1과 같습니다. 여러분은 반드시 :=를 사용해야만 합니다. 그 이유는 다른 표현기호들은 스퀵 3.9 이후로 비추천(deprecated)되었기 때문입니다.
'''&#58;=''' 는 오브젝트를 변수에 할당합니다. 때로는, ←를 대신 사용하는 모습을 볼 수 있습니다. 안타깝게도, 이 기호가 ASCII 문자가 아니기 때문에, 특별한 글꼴을 쓰기 전에는 밑줄 문자 처럼 나타납니다. 따라서 x:=1은 x1, x_1 또는 x 밑줄 1과 같습니다. 스퀵 3.9 부터 다른 표현 방법을 낡음 처리(deprecated) 해놓았으므로 :=를 사용해야 합니다.


===블록===
===블록===
대괄호 [ ]는 블록을 정의하며, 기능(function)을 나타내는 첫 번째 클래스 오브젝트인 블록 닫기 또는 낱말 닫기(lexical closure)로 알려져 있습니다. 우리가 살펴볼 내용처럼, 블록은 인수를 취하거나 로컬변수를 갖을 수 있습니다.
각괄호 [ ]는 블록을 정의하며, 함수를 나타내는 첫 번째 클래스 오브젝트인 블록 구분자<sup>block closure</sup> 또는 어휘 구분자<sup>lexical closure</sup>로 알려져 있습니다. 우리가 살펴볼 내용처럼, 블록은 인수를 취하거나 로컬변수를 가질 수 있습니다.


===프리미티브(Primitive)===
===프리미티브===
'''<primitive:…>'''는 가상 버신 프리미티브의 호출을 나타냅니다. (<primitive: 1>는 '''SmallInteger»+.''')를 위한 VM 프리미티브 입니다. 이 프리미티브 다음에 오는 모든 모드는 이 프리미티브 실행이 실패할 경우에만 실행니다. 스퀵 3.9 이후로, 동일한 구문은 메서드 어노테이션을 위해 사용되었습니다.
'''<primitive:…>'''는 가상 머신 프리미티브의 호출을 나타냅니다. (<primitive: 1>는 '''SmallInteger»+.''')를 위한 가상 머신 프리미티브 입니다. 이 프리미티브 다음의 코드는 프리미티브 처리에 실패했을 경우에만 실행합니다. 스퀵 3.9 부터는, 메서드 어노테이션에 동일한 문법을 사용합니다.


===단항 메시지===
===단항 메시지===
단항 메시지는 수신자(receiver, 3과 같은)에 보낸 한 개의 단어 (factorial과 같은)구성됩니다.
(3과 같은) 수신자로 보내는 (factorial과 같은) 한 개의 단어로 구성됩니다.


===바이너리 메시지===
===바이너리 메시지===
바이너리 메시지는 수신자에 보낸 연산자(+와 같은)이며 단일 인수를 취합니다. 3+4에서 수신자는 3이며 인수는(argument) 4입니다.
(+와 같이) 수신자로 보내며 단일 인자를 취하는 연산자입니다. 3+4에서 수신자는 3이며 인자는 4입니다.


===키워드 메시지===
===키워드 메시지===
키워드 메시지는 다중 키워드로 구성되어 있으며(raisedTo:modulo:와 같은), 각 끝부분은 콜론으로 되어 있으며, 단일 인수를 취합니다. 표현식 raisedTo: 6 modulo: 10에서, 메시지 선택자(selector) raisedTo:modulo:는 각각의 콜론 뒤에 오는 두 개의 인수 6과 10을 취합니다. 우리는 메시지를 수신자 2에 보냅니다.   
(raisedTo:modulo:와 같은) 여러가지 키워드로 구성되어 있으며, 각각 콜론으로 끝나고, 단일 인자를 취합니다. raisedTo: 6 modulo: 10 구문에서, 메시지 선택자 raisedTo:modulo:는 6과 10 두 개의 인자를 취하는데, 각각의 인자는 콜론 뒤에 붙어있습니다. 메시지를 수신자 2로 보냅니다.   
 
===메서드리턴===
↑는 메서드로부터 값을 리턴하기 위해 사용됩니다. (여러분은 ↑ 문자를 얻기 위해 반드시 ^을 타이핑 해야 합니다.)
연속된 스테이트먼트(문장, 컴퓨터에선 보통 스테이트먼트라 불림:역주).
구두점 또는 마침표는 (.) 스테이트먼트 분리자(the statement separator)입니다.
두 개의 표현식 사이에 구두점을 넣으면, 독립된 스테이트먼트로 변경됩니다.


===케스케이드===
===메서드 반환===
세미콜론은 단일 수신자에 메시지의 케스케이드를 보내기 위해 사용됩니다. Transcript show: 'hello'; cr에서 우리는 먼저 키워드 메시지 show: ‘hello’를 수신자 transcript(the receiver Transcript)에 보내고, 그 다음, 단항 메시지 cr를 동일한 수신자에 보냅니다.
↑ 는 메서드에서 값을 반환할 때 사용합니다. ( ↑ 문자를 쓰려면 ^을 입력해야 합니다.)


===선언문 순차 배치===
구두점 또는 마침표는 (.) 선언문 구분자입니다. 두 구문 사이에 구두점을 넣으면, 독립된 선언문으로 바뀝니다.


===종속===
세미콜론은 종속된 여러 메시지를 단일 수신자에 보내는데 사용할 수 있습니다. Transcript show: 'hello'; cr에서 show: ‘hello’ 키워드 메시지를 수신자 Transcript에 먼저 보내고, 단항 메시지 cr를 동일한 수신자에 보냅니다.


클래스 번호(The classes Number), 문자(Character), 문자열(String) 그리고 불리언(Boolean)은 8장에서 상세하게 다룰 것입니다.
Number, Character, String, Boolean 클래스는 8장에서 상세하게 다루겠습니다.


==Notes==
==Notes==

Revision as of 08:38, 20 February 2013

문법 요소

문법은 다음의 구성 요소로 이루어져 있습니다. (i) 여섯개의 준비된 키워드 또는 의사 변수들: self, super, nil, true, false, 그리고 thisContext (ii) 숫자, 문자, 문자열, 심볼 그리고 배열을 포함하는 리터럴 오브젝트[1]에 대한 상수 표현식 (iii) 변수 선언, (iv) 할당문, (v) 블록 클로저, (vi) 메시지 입니다.

Syntax 의미하는것
startPoint 변수 이름
Transcript 글로벌 변수 이름
self 의사(가짜) 변수
1 십진법 정수
2r101 이진정수
1.5 부동 소수점 수
2.4e7 지수 표기법
$a 문자 ‘a’
'Hello' 문자열 ‘Hello’
#Hello 심볼 # Hello
#(1 2 3) 문자/리터럴 배열
{1. 2. 1+2} 동적 배열
"a comment" 주석
¦ x y ¦ 변수 x y의 선언
x := 1 1을 x에 할당
[ x + y ] x y로 계산하는 변수
<primitive: 1> 가상머신 프리미티브 또는 어노테이션
3 factorial 단항 메시지
3+4 이항 메시지
2 raisedTo: 6 modulo: 10 키워드 메시지
↑ true 값을 true로 반환
Transcript show: ’hello’. Transcript cr (.) 수식 구분자(.)
Transcript show: ’hello’; cr 메시지 케스케이드 (;)
표 3.1: 간결한 스퀵 구문

표 3.1에서 다양한 문법 요소의 예를 볼 수 있습니다.

지역 변수

startPoint는 변수 이름 또는 식별자 이름입니다. 관례상, 식별자는 “캐멀케이스(camelCase)”로 단어를 구성합니다 (예를 들면, 각각의 단어는 처음 시작하는 단어를 제외하고 첫 글자를 대문자로 시작합니다). 인스턴스 변수, 메서드, 블록 인자, 임시 변수의 첫 번째 글자는 반드시 소문자여야 합니다. 는 변수가 전용 범위를 가지고 있음을 독자에게 보여줍니다.

공유 변수

대문자로 시작되는 식별자는 전역 변수, 클래스 변수, pool 딕셔너리 또는 클래스 이름입니다. Transcript는 전역 변수이며, TranscriptStream클래스의 인스턴스 입니다.

수신자

self는 실행 중인 현재 메서드 안에 있는 오브젝트를 참조하는 키워드입니다. 이 오브젝트가 보통 실행해야 할 메서드에서 발생한 메시지를 받으므로 이 키워드를 “수신자”라고 합니다. 우리가 self에 할당을 할 수 없으므로 의사 변수라고 합니다.

정수

스퀵은 42와 같은 보통 10진수 정수 뿐만 아니라, 기수 표기법도 제공합니다. 2r101은 2진수의 101이며[예를 들면, 바이너리], 10진수의 5와 동일합니다.

부동 소수점 수

10진 기반 지수와 함께 지정할 수 있습니다: 2.4e7 is 2.4 × 107.

문자

달러 기호는 리터럴 문자임을 의미합니다: $a는 ‘a’에 대한 리터럴입니다. 비 출력 문자의 인스턴스는 적절한 이름으로 만든 Character space 와 Character tab과 같은 적절하게 이름 붙인 메시지를 보내어 Character 클래스에서 비출력 문자에 대한 인스턴스를 가져올 수 있습니다.

문자열

작은 따옴표(Single quotes- 혹은 게발톱 따옴표)는 리터럴 문자열을 정의할 때 사용합니다.문자여 ㄹ안에서 따옴펴를 사용하려면, 'Gday' 의 경우와 같이 따옴표를 두 개를 넣으면 됩니다.

심볼

문자의 연속 요소를 포함한다는 점에서 문자열과 비슷합니다. 그러나 문자열과 달리, 리터럴 심볼은 전체적으로 유일해야 합니다. 심볼 오브젝트 #Hello는 하나밖에 없지만, 값이 ‘Hello’ 인 여러가지 문자열 오브젝트가 있을 수도 있습니다.

컴파일 시간 배열

컴파일 시간 배열은 #( )와 공백으로 구분한 리터럴로 둘러쌓아 정의합니다. 괄호 안의 모든 요소는 컴파일 시간 상수여야 합니다. 예를 들어, #( 27#(true false)abc)는 세가지 요소의 리터럴 배열입니다: 정수 27, 두 개의 불리언 값을 지닌 컴파일 시간 배열, 그리고 심볼 #abc가 들어있습니다.

실행 시간 배열

중괄호 { }는 실행 시간 동안 동적 배열을 정의합니다. 요소는 구두점으로 구분한 구문입니다. 따라서 {1.2. 1+2}는 1, 2, 그리고 1+2를 처리한 결과 요소가 들어있는 배열을 정의합니다. (중괄호 기호는 스몰토크의 스퀵 언어에서 고유한 것입니다. 다른 스몰토크에서는 동적 배열을 확실히 만들어야 합니다.)

주석

주석은 큰 따옴표로 둘러싸여 있습니다. 문자열이 아니라 "hello"는 주석이며, 스퀵 컴파일러가 무시합니다. 주석은 여러 줄에 걸쳐 있을 수 있습니다.

지역 변수 정의

수직 바는 | | 메서드(그리고 블록 내에서도)의 하나 이상의 변수 선언을 둘러쌉니다.

할당

:= 는 오브젝트를 변수에 할당합니다. 때로는, ←를 대신 사용하는 모습을 볼 수 있습니다. 안타깝게도, 이 기호가 ASCII 문자가 아니기 때문에, 특별한 글꼴을 쓰기 전에는 밑줄 문자 처럼 나타납니다. 따라서 x:=1은 x1, x_1 또는 x 밑줄 1과 같습니다. 스퀵 3.9 부터 다른 표현 방법을 낡음 처리(deprecated) 해놓았으므로 :=를 사용해야 합니다.

블록

각괄호 [ ]는 블록을 정의하며, 함수를 나타내는 첫 번째 클래스 오브젝트인 블록 구분자block closure 또는 어휘 구분자lexical closure로 알려져 있습니다. 우리가 살펴볼 내용처럼, 블록은 인수를 취하거나 로컬변수를 가질 수 있습니다.

프리미티브

<primitive:…>는 가상 머신 프리미티브의 호출을 나타냅니다. (<primitive: 1>는 SmallInteger»+.)를 위한 가상 머신 프리미티브 입니다. 이 프리미티브 다음의 코드는 프리미티브 처리에 실패했을 경우에만 실행합니다. 스퀵 3.9 부터는, 메서드 어노테이션에 동일한 문법을 사용합니다.

단항 메시지

(3과 같은) 수신자로 보내는 (factorial과 같은) 한 개의 단어로 구성됩니다.

바이너리 메시지

(+와 같이) 수신자로 보내며 단일 인자를 취하는 연산자입니다. 3+4에서 수신자는 3이며 인자는 4입니다.

키워드 메시지

(raisedTo:modulo:와 같은) 여러가지 키워드로 구성되어 있으며, 각각 콜론으로 끝나고, 단일 인자를 취합니다. raisedTo: 6 modulo: 10 구문에서, 메시지 선택자 raisedTo:modulo:는 6과 10 두 개의 인자를 취하는데, 각각의 인자는 콜론 뒤에 붙어있습니다. 이 메시지를 수신자 2로 보냅니다.

메서드 반환

↑ 는 메서드에서 값을 반환할 때 사용합니다. ( ↑ 문자를 쓰려면 ^을 입력해야 합니다.)

선언문 순차 배치

구두점 또는 마침표는 (.) 선언문 구분자입니다. 두 구문 사이에 구두점을 넣으면, 독립된 선언문으로 바뀝니다.

종속

세미콜론은 종속된 여러 메시지를 단일 수신자에 보내는데 사용할 수 있습니다. Transcript show: 'hello'; cr에서 show: ‘hello’ 키워드 메시지를 수신자 Transcript에 먼저 보내고, 단항 메시지 cr를 동일한 수신자에 보냅니다.

Number, Character, String, Boolean 클래스는 8장에서 상세하게 다루겠습니다.

Notes

  1. literal - 프로그램 언어에서 문자열 그 자체가 값을 나타내는 것. 예를 들면 X='90' 에서 문자열 90은 90이라는 값을 나타내는 리터럴이다