你如何在dotty中使用通配符?

时间:2018-03-30 15:41:40

标签: dotty

这是一个允许迭代案例类的字段的示例,并且可能在Scala中演示了通配符(_)的许多用法之一,但是没有在Dotty中编译:< / p>

    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)

似乎他们的使用可能仍然是up in the air,但目前有没有办法做到这一点(例如大约0.6)?

1 个答案:

答案 0 :(得分:1)

您的代码示例包含_的多个用法,唯一有问题的用法是: def map[_,O] 在Scala 2中,这声明了两个类型参数,一个名为_,另一个名为O。名为_的参数无用,因为您无法引用它(因为_已经有不同的含义)。我认为这是Scala 2解析器中的一个错误,而不是一个功能。你可以删除这个类型参数,你的代码应该编译: def map[O]