SqueakByExample:3.4

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

메서드 문법

스퀵에서 구문은 어디서든 처리될 수 있어야 하지만 (예를 들면, Workspace, 디버거 또는 브라우저), 메서드는 보통 브라우저 창 또는 디버거등에서 정의됩니다. (메서드는 외부 장치에 파일로 저장할 수 있지만, 보통 스퀵에서 프로그래밍하는 방법은 아닙니다.)

프로그램은 주어진 클래스의 상태정보등에 따라 한번에 하나의 메소드씩 개발합니다.(클래스는 기존의 클래스로 메시지를 보내어 서브클래스를 만들도록 요청하여 정의합니다. 따라서, 클래스를 정의하는데 특별한 문법이 필요한 것은 아닙니다.)

String 클래스의 LineCount 메서드를 살펴보겠습니다. (보통의 관례에서는 ClassName>>methodName와 같이 메서드를 참조하므로, 이 메서드를 lineCount라고 부르겠습니다.)


메서드 3.1: 줄 수 세기

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


메서드의 각 문법적 구성 요소는 다음과 같습니다:

  1. 이름(예를 들면 lineCount)과 몇 가지 인자(이 예에서는 아무것도 없습니다)를 포함하는 메서드 패턴
  2. 주석(어디서든 있을 수 있지만, 관례상 메서드가 무슨 일을 하는지 맨 위에 적습니다);
  3. 지역 변수 정의(예를 들면 cr과 count)의 선언, 그리고
  4. 점으로 구분한 수많은 구문이 있습니다.


↑(^로 입력) 보다 우선되는 구문의 처리는 메서드를 빠져나갈 시점에 표현식의 값을 반환합니다. 어떤 구문의 결과 값을 분명하게 반환하지 않고 끝나는 메서드는 암묵적으로 self를 반환합니다.


인수와 지역 변수는 항상 소문자로 시작합니다. 대문자로 시작하는 이름은 전역 변수로 간주합니다. 예를 들어 Character와 같은 종류의 클래스 이름은, 그 클래스를 나타내는 오브젝트를 참조하는 간단한 전역 변수임을 나타냅니다.


Notes