宿題 としてタグ付けされました。クラスを実装しようとしているときに、オブジェクト指向の世界で問題が発生しています。
セットをモックするために使用しているリストに対してアクションを実行するためのさまざまな関数を実装しています。たとえば、結合を見つける方法についての論理についてはあまり心配していませんが、実際には構造だけです。
例:
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 union に見つからない、または型 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->()))
}
私はまだ toList を使用して簡単にトラバースできるようにしたいのですが、マップをいじっているときにまだ型エラーが発生しています..