標記爲家庭作業。 在嘗試實現一個類時,我在面向對象的世界中遇到了麻煩。斯卡拉類繼承
我正在實施各種功能來對列表執行操作,我用它來模擬一組。 例如,我並不太擔心自己關於如何找到工會的邏輯,但實際上只是結構。
對於如:
abstract class parentSet[T] protected() {
def union(other:parentSet[T]):parentSet[T]
}
現在我想要一個新的類擴展parentSet:
class childSet[T] private (l: List[T]) extends parentSet[T] {
def this() = this(List())
private val elems = l
val toList = List[T] => new List(l)
def union(other:parentSet[T]):childSet[T] = {
for (i <- this.toList) {
if (other contains i) {}
else {l :: i}
}
return l
}
}
編譯後,我收到錯誤,爲使得類型childSet未在DEF工會發現,也不是鍵入T以保持參數。另外,我認爲我的toList不正確,因爲它抱怨它不是該對象的成員;僅舉幾例。
我的語法在哪裏我錯了?
編輯
現在我已經得到了想通了:
def U(other:parentSet[T]):childSet[T] = {
var w = other.toList
for (i <- this.toList) {
if (!(other contains i)) {w = i::w}
}
return new childSet(w)
}
現在,我試圖地圖做同樣的操作,這是什麼我正在處理/使用:
def U(other:parentSet[T]):MapSet[T] = {
var a = Map[T,Unit]
for (i <- this.toList) {
if (!(other contains i)) {a = a + (i->())}
}
return new MapSet(elems + (a->()))
}
我還想使用toL IST使它容易穿越,但我仍然得到錯誤類型,而與地圖搞亂..
見上面編輯過的文章 –