Şu anda Scala'yı öğreniyorum ve vaka derslerimi tasarlarken bazı problemlerim var. Aynı özelliklere sahip iki vaka sınıfına ihtiyacım var. Bu yüzden bu özellikleri tanımlayan soyut bir temel sınıftan miras almamın iyi bir fikir olacağını düşündüm. vaka sınıf kurucularınızdaki uri
taban sınıfının uri
özelliği üzerine yazılacağı için Ancak bu kodSoyut sınıftan miras kalan sınıflar
abstract class Resource(val uri : String)
case class File(uri : String) extends Resource(uri)
case class Folder(uri : String) extends Resource(uri)
derleme değil.
Bunu tasarlamanın doğru yolu ne olurdu?
ben böyle bir şey yapmak mümkün istiyorum bu
val arr = Array[Resource](File("test"), Folder("test2"))
arr.foreach { r : Resource => r match {
case f : File => println("It's a file")
case f : Folder => println("It's a folder")
} }
"eşdeğer" Java kodu
abstract class Resource {
private String uri;
public Resource(String uri) {
this.uri = uri
}
public String getUri() {
return uri;
}
}
// same for Folder
class File extends Resource {
public File(String uri) {
super(uri);
}
}
Ancak, bu hem 'Dosya' hem de 'Klasör' içinde 'uri 'özelliği ve alıcıyı çoğaltır. Sorumda Java örneğine benzeyen temiz kod almanın bir yolu var mı? –
Öyleyse neden vaka sınıfları kullanıyorsunuz? Vaka sınıfları, getter ve ayarlayıcıları ekler. Normal sınıfları ve onların eşlik eden nesnelerini yazın. – onof
Bu çok fazla kazan plaka kodu mu olacağı? ;-) Bir örnek verebilir misiniz? –