속성에 대한 읽기 전용은 쉽습니다. 해당하는 setter없이 getter 메서드를 만들면됩니다. 개인적으로 수정할 수있는 필드를 만드는 것도 쉽습니다.
슬프게도 이것은 가능하지 않으며 각 역할마다 고유 한 이름이 필요합니다. 이 같은 mething :
class Bippy(bop0: Int) {
private[this] var privatebop = bop0
//privatebop is ONLY EVER used by the following getter and setter:
private def bop_=(x:Int) = privatebop = x
def bar = privatebop
}
당신이 명명 된 인수를 사용하는 방법에 대한 관심이 아니에요, 또는 Scaladoc에서 인수의 이름으로, 다음이 더욱 단축 될 수있는 경우 :
class Bippy(private[this] var privatebop) {
//privatebop is ONLY EVER used by the following getter and setter:
private def bop_=(x:Int) = privatebop = x
def bop = privatebop
}
UPDATE를
매개 변수를 다시 지정하는 가장 확실한 방법은 공장을 위의 기술 중 하나와 결합하는 것입니다.
object Bippy{
def apply(bop: Int) = new Bippy(bop)
}
다음은 Bippy(42)
이라고 할 수 있습니다. 일반 생성자와 동일하지만 new
키워드가 없습니다.
좋은 답변, 정말 고마워요! – Malax