标记为家庭作业。 在尝试实现一个类时,我在面向对象的世界中遇到了麻烦。斯卡拉类继承
我正在实施各种功能来对列表执行操作,我用它来模拟一组。 例如,我并不太担心自己关于如何找到工会的逻辑,但实际上只是结构。
对于如:
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使它容易穿越,但我仍然得到错误类型,而与地图搞乱..
见上面编辑过的文章 –