아래와 같은 코드가 있다고 하자. 아래의 코드는 합계를 계산하는 프로그램이다.
class ChecksumAccumulator {
private var sum = 0
def add(b: Byte): Unit = sum += b // Side Effect 가 있는 함수
def checksum(): Int = ~(sum & 0xFF) + 1
}
여기서 add 함수는 side effect 가 있는 코드이다.
side effect 란 일반적으로 file I/O 나, 함수의 바깥쪽에 있는 어떤 상태를 변경시키는 것을 의미한다. 여기서 함수의 바깥쪽에 있는 어떤 상태라는 것은 private var sum 이라는 변수이다. 이 변수는 instance variable 로서 각각의 객체의 상태를 나타내준다.
Scala 언어에서는 Side Effect 를 가진 함수를 나타내는 방법으로서, return type 인 Unit 을 제거 하고, 함수의 Body 부분을 Curly Brace 로 감싸준다.
class ChecksumAccumulator {
private var sum = 0
def add(b: Byte) { sum += b } // 명시적으로 Side Effect 가 있다고 표시함
def checksum(): Int = ~(sum & 0xFF) + 1
}
Scala 언어에서는 함수의 Body 전에 있는 equal sign("=") 을 제거하는 것은 이 함수가 Unit type 을 돌려준다는 것을 의미하게 된다.
이를 확인해 보기 위해서 scala interpreter shell 을 띄우고 아래와 같이 코드를 작성하면,
scala> def g() { "This String gets lost too" }
g: ()Unit
return type 으로 Unit 을 돌려주는 것을 알 수 있다.
'Programming > Scala' 카테고리의 다른 글
Scala - Pattern matching (0) | 2011.11.10 |
---|---|
Scala - IDE recommendation (scala 를 위한 개발 IDE 추천) (0) | 2011.11.10 |
Scala - syntax highlighting for vi vim (0) | 2011.11.10 |
Scala - singleton object (0) | 2011.11.10 |
Scala 컴파일러 설치 (0) | 2011.11.10 |