Programming in Sala 책으로 스칼라 스터디하면서 정리했던 내용이다. 지금은 3판 번역본도 나왔지만, 약간 앞서서 스터디를 시작해서 2판으로 진행하고 있다.
4장
클래스
- 클래스 정의
class ChecksumAccumulator {
// 클래스 정의
}
- 객체 생성 : new
new ChecksumAccumulator
- 필드, 메소드는 멤버
필드
- 필드 정의 : val, var
- 인스턴스 변수라고도 함
- 기본 접근 수준은 전체 공개
- 비공개 필드 : private
class ChecksumAccumulator {
private var sum = 0
}
메소드
- 메소드 정의 : def
- 메소드 파라미터는 val
- 권장 스타일
- return을 명시적으로 사용하지 않는 것 -> 메소드는 한 값을 계산하는 표현식
- 하나의 표현식만 있으면 중괄호 생략
- 결과식이 짧으면 def 문 줄에 함께 쓰기
class ChecksumAccumulator {
private var sum = 0
def add(b: Byte): Unit = sum += b
def checksum(): Int = ~(sum & 0xFF) + 1
}
- 결과 타입이 Unit 인 경우
- 부수 효과를 위해 사용
- = 생략하고 {}로 감싸는 것으로 표현 가능
def add(b:Byte) { sum += b }
세미콜론 추론
다음 세가지 경우가 아니면 줄의 끝은 세미콜론으로 취급된다.
- 줄이 명령을 끝낼 수 있는 단어로 끝나지 않는다. 마침표(.)나 중위 연산자 등의 줄의 맨 끝에 있는 경우
- 다음 줄의 맨 앞이 문장을 시작할 수 없는 단어로 시작한다.
- 줄이 () 사이나 [] 사이에서 끝난다.
싱글톤 객체
- 클래스 정의와 비슷하나 object 키워드 사용
object ChecksumAccumulator {
// ...
}
- 싱글톤 객체는 1급 계층
- 파라미터를 전달할 방법 없음
- 클래스를 확장(extend)하거나 트레이트를 믹스인(mix in) 가능
- 자체 타입을 정의하지는 않음
동반 객체와 동반 클래스
- 동반 객체(companion object) : 어떤 클래스 이름과 동일한 이름의 싱글톤 객체
- 동반 클래스(companion class) : 어떤 싱글톤 객체와 동일한 이름의 클래스
- 독립 객체(standalone object) : 동반 클래스가 없는 싱글톤 객체
- 클래스와 동반 객체는 서로의 비공개 멤버에 접근할 수 있다.
스칼라 애플리케이션
- 다음과 같은 main 메소드를 가진 독립 싱글톤 객체가 애플리케이션의 시작점
- 인자 : Array[String]
- 반환값 : Unit
object Summer {
def main(args: Array[String]) {
// ...
}
}
- 클래스 이름과 파일이름을 동일하게 만드는 것이 강제 사항은 아님.
- 컴파일 : scalac, fsc
Application 트레이트
object FallWinterSpringSummer extends Application {
// main 메소드 내용
}
- scala.Application -> scala.App
'Developing' 카테고리의 다른 글
Programming in Scala 스터디 정리 - 5장. 기본 타입과 연산 (0) | 2017.06.10 |
---|---|
Programming in Scala 스터디 정리 - 3장. 스칼라 두 번째 걸음 (0) | 2017.06.08 |
Programming in Scala 스터디 정리 - 2장. 스칼라 첫걸음 (0) | 2017.06.07 |