以下に私が持っています:
trait Elem {
def compare: Int
}
case class DiffElem(weight: Int, len: Int) extends Elem {
def compare = weight - len;
}
これで、関数に基づいて、Elemの多くのサブクラスが存在する可能性がありcompare
ます。これで、ファイルから入力を読み取り、次のリストを生成する関数ができましたDiffElem
。
def getInput[T <: Elem](): List[T] = {
var ans: List[T] = List.empty[T]
for (line <- Source.fromFile("src/week1/jobs.txt").getLines()) {
val diff = line.split(" ")
ans = ans match{
case i:List[DiffElem] => new DiffElem(Integer.parseInt(diff(0)), Integer.parseInt(diff(1))) :: ans;
case _ => ???
}
}
ans
}
しかし、コンパイラーは、明らかに::
次のような不変型の操作を許可していません。私は不変を実行しようとしています。関数シグネチャをに変換すると機能しますT >: Elem
が、目的は解決されません。
より良いアプローチはありますか?