-
[스칼라] getter setter스칼라 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 } }
'스칼라' 카테고리의 다른 글
[스칼라] 암시적 변환과 암시적 파라미터 (implicit) (0) 2022.02.26 [스칼라] 추상 멤버 (0) 2022.02.25 [스칼라] 컬렉션 (0) 2022.02.23 [스칼라] 리스트 (0) 2022.02.22 [스칼라] 케이스 클래스와 패턴 매치 (0) 2022.02.21