Skip to content

4장 classes and objects

outsideris edited this page Aug 23, 2011 · 5 revisions

drypot님의 한글 번역

Class, fields, and methods

  • private로 멤버변수를 선언하려면 앞에 private라고 쓴다
  • 기본 접근레벨은 public이다
  • 메서드 파라미터는 val이다
  • return문이 없으면 마지막 값이 리턴된다(return문을 안쓰는걸 권한다)
  • 메서드가 하나의 표현식만 있으면 중괄호를 없앨수 있고 def부터 한줄로 쓸 수 있다
  • 사이드 이펙트가 있는 메서드는 리턴타입과 =를 제거하고 바디를 중괄호로 감싸서 표현할 수 있다

Semicolon inference

  • 세미콜론은 옵셔널이다
  • 여러줄에 문장을 쓰려면 괄호로 묶거나 오퍼레이터를 문장의 마지막에 쓴다

Singleton objects

  • 싱글톤오브젝트가 클래스와 같은 이름일 때 이것을 클래스의 companion object라고 부르고 두 클래스는 같은 소스파일에 있어야 한다
  • companion object의 클래스는 companion class라고 부른고 두 클래스는 서로 private에 접근할 수 있다
  • 싱글톤오브젝트는 static 메서드들읠 담고 있을 뿐만 아니라 first-class 오브젝트이다
  • 클래스와 싱글톤오브젝트의 차이점은 싱글톤오브젝트는 파라미터를 받을수 없다(new로 생성할수 없다.)
  • companion class와 같은 이름이 아닌 싱글톤 오브젝트를 standalone object라고 부른다

A Scala application

  • 스칼라는 Predef 싱글톰 오브젝트의 멤버로 java.langscala를 import한다
  • 스칼라에서는 파일명을 맘대로 할 수 있지만 찾기 쉽도록 클래스와 같은 파일명을 권한다
  • 스크립트는 결과 표현식으로 끝나야 한다
  • scalac로 파일을 컴파일 할 수 있다
  • fsc(fast Scala compiler)를 쓰면 서버데몬이 실행되고 컴파일할 파일리스트를 데몬에 보내서 즉시 컴파일 할 수 있다.

The Application trait

  • 스칼라는 scala.Application 트레이트를 제공한다(extends Application)
  • extends Application하면 main메서드를 작성할 필요 없이 줄괄호안에 바디를 적으면 자동으로 메인메서드가 된다
  • 대신 단점이 있다
    • 커맨드라인의 아규먼트를 넘길 수 없다
    • JVM 쓰레드모델의 제한때문에 멀티쓰레드 프로그램이면 명시적인 main을 사용해야 한다
    • 몇몇 JVM에서는 옵티마이징을 하지 않는다

질문

  • p113의 주석에 java의 static import와 유사하다는게 무슨 말인가요?
Clone this wiki locally