스칼라
[스칼라] getter setter
Parkjuida
2022. 2. 23. 17:02
스칼라 클래스에서는 비공개가 아닌 모든 var 멤버에 대해 getter, setter를 자동으로 정의한다.
getter는 변수 이름과 동일하고 setter는 변수이름에 _=을 붙인 형태로 정의된다.
class Time {
var hour = 12
var minute = 0
def hour_=(h: Int) {
if(h >= 0 && h <= 24) {
h
} else {
-1
}
}
def minute_=(m: Int): Unit = {
if(m >= 0 && m <= 60) m else -1
}
}
// method minute_= is defined twice
// conflicting symbols both originated in file '<console>'
만약 위와 같이 hour_= 와 minute_=를 정의 하려고 하면 에러가 발생된다. private 멤버에 대해서는 아래와 같이 getter와 setter를 지정해 줄 수 있다.
class Time {
private var _hour = 12
private var _minute = 10
def minute = _minute
def minute_=(input: Int): Unit = {
require(0 <= input && input < 60)
_minute = input
}
}