【问题标题】:What is the ?0 type in Scala?Scala 中的 ?0 类型是什么?
【发布时间】:2015-09-16 04:45:43
【问题描述】:
scala> Try(Class.forName("scala.util.Try"))
warning: there was one feature warning; re-run with -feature for details
res54: scala.util.Try[Class[?0]] forSome { type ?0 } = Success(class scala.util.Try)

谁能解释一下?0 类型是什么?当我尝试在代码中使用它时,无法编译。

val tryMongo: Try[Class[?0]] = Try(Class.forName(MONGO_COLLECTION_CLASS))

【问题讨论】:

    标签: scala generics types wildcard


    【解决方案1】:

    这通常出现在existential type,所以试试:

    scala> val tryMongo: Try[Class[`?0`]] forSome { type `?0`} = Try(Class.forName("scala.util.Try"))
    tryMongo: scala.util.Try[Class[?0]] forSome { type ?0 } = Success(class scala.util.Try)
    

    请注意,您可以选择任何名称,例如TA 而不是?0 - 这只是编译器消息的约定(可能选择?,因为Java 中使用了相同的符号)。也可以使用快捷方式XXX[_],完全等同于XXX[T] forSome { type T }

    scala> val tryMongo: Try[Class[_]] = Try(Class.forName("scala.util.Try"))
    tryMongo: scala.util.Try[Class[_]] = Success(class scala.util.Try)
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 2020-10-05
    • 2011-06-21
    • 1970-01-01
    • 2011-01-06
    • 2020-03-01
    相关资源
    最近更新 更多