【发布时间】:2013-07-22 01:38:11
【问题描述】:
我是 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]) (或类似的东西)而apply() 无论如何都是错误的,因为List[_] 是一种类型而不是“不同类型”。即使 varargs * 返回了一个元组,我仍然不确定如何让bar("a") 返回一个List[OriginalTypePassedIn]。那么实际上有没有办法做到这一点? Scala 看起来非常灵活,所以感觉应该有一些高级的方法来做到这一点。
【问题讨论】:
-
这不是完全相同的副本,但与stackoverflow.com/questions/17684023/…非常相似
-
@Rüdiger 您在链接中的回答非常棒,谢谢。
标签: scala types variadic-functions