SqueakByExample:3.4
Revision as of 05:14, 30 August 2012 by Onionmixer (talk | contribs)
메서드 문법(Method syntax)
표현식(expressions)는 스퀵의 어느곳에서라도 평가될 수 있는 반면에(예를 들면, 워크스페이스, 디버거 또는 브라우저), 메서드는 보통보통 브라우저 창 또는 디버거에서 보통 정의됩니다. (메서드는 외부 매체로부터 파일화 될 수 있지만, 스퀵에서 프로그램하기 위한 일상적인 방법은 아닙니다.)
프로그램들은 주어진 클래스의 환경에서 한번에 한 개의 메서드로 개발됩니다(서브클래스를 만들기 위한 요청을 클래스에 요청함으로써, 현존하는 클래스에 메시지를 보내어 클래스가 정의되므로, 클래스를 정의하기 위해 요구되는 특별한 구문은 없습니다.)
여기 클래스 String에 메서드 LineCount가 있습니다. (보통 관례에서는 메서드를 ClassName»methodName로서 참조하는 것이므로, 우리는 이 메서드를 lineCount로 부를 것입니다.)
메서드 3.1:라인 카운트( Line count)
String»lineCount
"Answer the number of lines represented by the receiver,
where every cr adds one line."
| cr count |
cr := Character cr.
count := 1 min: self size.
self do:
[:c | c == cr ifTrue: [count := count + 1]].
↑ count
구문적으로, 메서드는 다음 항목으로 구성되어 있습니다:
- 이름(예를 들면 lineCount)과 모든 인수(이 예에서는 아무것도 없음)를 포함하고 있는 메서드 패턴(the method patter)
- comments (these may occur anywhere, but the convention is to put one at the top that explains what the method does); 주석[이 주석(comments)들은 어디에서나 발생할 수 있지만, 관례는 메서드의 기능을 설명하는 주석을 맨 위에 놓습니다];
- 로컬 변수(예를 들면 cr과 count)의 공표(declarations)와
- 점(dots)으로 분리된 모든 표현식의 숫자; 여기서는 4개가 있습니다.
↑ 를 앞세우는 어떤 표현식의 평가는, 그 표현식의 값을 리턴하여, 메서드가 그 지점에서 나가도록 할 것입니다. 몇몇 표현식을 분명하게 러턴하지 않고 종료되는 메서드는 분명하게 self를 리턴합니다.
인수와 로컬변수는 항상 소문자로 시작합니다. 대문자로 시작하는 이름들은 글로벌 변수로 간주될 것입니다. 문자(Character) 와 같은 종류의 클래스 이름은, 예를 들면, 그 클래스를 나타내는 오브젝트를 참조하는 글로벌 변수입니다.