SqueakByExample:3.4: Difference between revisions

From 흡혈양파의 번역工房
Jump to navigation Jump to search
(번역수정)
 
(번역수정)
Line 5: Line 5:
프로그램은 주어진 클래스의 상태정보등에 따라 한번에 하나의 메소드씩 개발합니다.(클래스는 기존의 클래스로 메시지를 보내어 하위 클래스를 만들도록 요청하여 정의합니다. 따라서, 클래스를 정의하는데 특별한 문법이 필요한 것은 아닙니다.)  
프로그램은 주어진 클래스의 상태정보등에 따라 한번에 하나의 메소드씩 개발합니다.(클래스는 기존의 클래스로 메시지를 보내어 하위 클래스를 만들도록 요청하여 정의합니다. 따라서, 클래스를 정의하는데 특별한 문법이 필요한 것은 아닙니다.)  


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





Revision as of 16:16, 21 February 2013

메서드 문법

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

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

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