Bir kez bir hayvan rengi belirtmek istiyorum ve aynı türün tüm hayvanları için aynıdır. hangi olamaz zaten bir sözleşmesi olarak,Scala'da soyut nesne değerlerini ve yöntemlerini nasıl bildiriyorsunuz?
object Dog extends Animal {val color = "green"}
Bu nesne olması gerekir
bireysel hayvanlar renkleri
abstract object Animal {val color: String}
Sonra belirtin:
yüzden yapmak istiyorum Hayvan nesnesinde yalnızca fabrika yöntemiyle hayvanların yapılması da değiştirildi ve fabrika yöntemlerinin renklere erişmesi gerekiyor. , ör.
abstract object Animal {
val color: String
def makeAnimal(args): Animal = ...
}
nasıl aslında göz önüne alındığında, scala bu yaparsınız "tek sınıfları deklare ancak tanımlanmamış üye var olabilir"?
Bunu özelliklerle kullanarak hacky yolunu düşünebilirim, ama umarım daha iyi bir şey vardır.
[EDIT] Dolayısıyla, karmaşık nedenlerden dolayı değerleri/yöntemleri tutmak için özellikleri kullanamıyorum. Geçerli çözüm, çocuk nesnesinin bir nesneyi kullanarak ana nesne ile statik olarak kaydedilmesini ve bir nesnede tanımlanması gereken araç olmayan değerlere ve yöntemlere erişmemi sağlar. Hala daha iyi bir çözüm bulmayı umuyorum.