私はScalaが初めてです...
とにかく、私は次のようなことをしたい:
val bar = new Foo("a" -> List[Int](1), "b" -> List[String]("2"), ...)
bar("a") // gives List[Int] containing 1
bar("b") // gives List[String] containing "2"
私がするときの問題:
class Foo(pairs: (String, List[_])*) {
def apply(name: String): List[_] = pairs.toMap(name)
}
pairs
Array[(String, List[Any]) (またはそのようなもの)になり、「異なる型」ではなく 1 つの型であるapply()
ため、とにかく間違っています。List[_]
varargs * がタプルを返したとしても、どうやってbar("a")
a を返すのかまだわかりませんList[OriginalTypePassedIn]
。それで、実際にこれを行う方法はありますか?Scala は非常に柔軟に見えるので、これを行うための高度な方法が必要であると思われます。