这是一个允许迭代案例类字段的示例,并可能演示_
了 Scala 中通配符 ( ) 的多种用法之一,但在 Dotty 中不编译:
case class ListTest(
listString: List[String],
listInt: List[Int]
) {
def map[_,O](ff: List[_] => O): Iterable[O] = {
getClass.getDeclaredFields.map { field =>
field.get(this) match {
case list: List[_] => Some(ff(list))
case _ => None
}
}.flatMap(x => x)
}
}
}
val lists = ListTest(List("asdf", "1234"), List(1,2,3))
lists.map(l => l.size)
似乎它们的使用可能仍然悬而未决,但目前有没有办法做到这一点(例如大约 dotty 0.6)?