标记为家庭作业。在尝试实现一个类时,我在面向对象的世界中遇到了麻烦。
我正在实现各种功能来对列表采取行动,我用来模拟一个集合。例如,我不太担心如何找到联合的逻辑,但实际上只是结构。
例如:
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
}
}
编译时,我收到错误,例如在 def union 中找不到类型 childSet,也没有类型 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)
}
现在,我正在尝试对 map 执行相同的操作,这就是我正在处理/使用的:
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->()))
}
我仍然想使用 toList 使它易于遍历,但是在弄乱地图时我仍然遇到类型错误..