Bu iki sınıf farklı davranır; Nedeni, bir private
yerine private[this]
bildiriminin kullanımıyla ilişkili görünüyor. Birisi nedenini açıklayabilir mi lütfen?Görünüşe göre davranışta beklenmedik bir fark özel görünmek yerine özel [bu] özel
private
: ben hem sınıflar için bekliyordum olarak repl olarakclass Person( private var _age: Int ) { if (_age < 0) { _age = 0 } def age = _age def age_=(newAge: Int) { if (newAge > _age) { _age = newAge } } }
, bu davranır;
scala> val person = new Person(-1) person: Person = [email protected] scala> person.age res0: Int = 0
private[this]
: yani,age
yöntem yapımı sırasında uygun değere ayarlandı_age
alır, Çoğaltma olarakclass Person( private[this] var _age: Int ) { if (_age < 0) { _age = 0 } def age = _age def age_=(newAge: Int) { if (newAge > _age) { _age = newAge } } }
,
person.age
önce_age
değerini alır gibi görünmektedirif
ifadesinin değerlendirilmesine. olsa ayarlayıcı kullandıktan sonra beklendiği gibi çalışır:scala> val person = new Person(-1) person: Person = [email protected] scala> person.age res0: Int = -1 scala> person.age = 0 person.age: Int = 0 scala> person.age res1: Int = 0