özel tip özel üyesinin bir kamu alt üyesini açığa (Örnek basitleştirilmiştir fakat içerdiği tüm önemli parçalar): BuradaBulmaca - Ben böyle bir şey yapmak istiyorum
class Master
{
type DataType = Int
var counter : DataType = 0
}
class Slave(private val master : Master)
{
val counter = master.counter // (*)
}
Ve (*) Ben olsun hatası:
private value master escapes its defining scope as part of type Slave.this.master.DataType
val counter = master.counter
hatası anlıyorum ama nedenini anlamıyorum - tipi sınıfına Master
değil, nesnenin master
parçasıdır, bu nedenle sınıf özelse önemlidir, nesne değil. En azından teoride.
hızlı çözüm yapmak kolaydır:
val counter : Master#DataType = master.counter
Ama bu daha önce olduğu gibi aynı kod açık bir versiyonudur, bu "sadece" daha yazarak alır inanıyoruz. Bu bir özellik mi o zaman?
Soru:
bir tür (burada VeriTürü) nesnenin bağımlı değil, sınıf (sınıfı örneği başına, yani tip tanımlı) Scala mi? Eğer
this is an explicit version of the exactly same code as before
Master#DataType
ve master.DataType
iki farklı türleridir dendiğinde
Teşekkür ederim, eğer bu doğru bir şekilde anladım (ancak "Scala'da Programlama" bölümünden okumadım - inanıyorum - veya belki de kaymış), sınıfın her örneği için yalnızca sınıf başına değil . – greenoldman
Güncelleme için teşekkür ederiz, bu çok değerli, maalesef mesajınızı 1'den fazla atlatamıyorum :-) – greenoldman
Bu, Scala'daki diğer OOP dillerinden geldiğinde "gotcha" olabilecek yararlı şeylerden biridir. Çok özlü cevap; benim değerime değer;). – TechNeilogy