【发布时间】:2012-10-02 18:09:50
【问题描述】:
标记为作业。 在尝试实现一个类时,我在面向对象的世界中遇到了麻烦。
我正在实现各种功能来对列表执行操作,我用它来模拟一个集合。 例如,我不太担心如何找到联合的逻辑,但实际上只是结构。
例如:
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 使其易于遍历,但是在弄乱地图时我仍然遇到类型错误..
【问题讨论】:
标签: oop class scala inheritance