3

当我阅读 Mxnet 源代码时,我对以下语句感到困惑:

object NDArray {
  private val logger = LoggerFactory.getLogger(classOf[NDArray])
  private[mxnet] val DTYPE_NATIVE_TO_MX: Map[Class[_ >: Float with Int with Double], Int] = Map(
    classOf[Float] -> 0,
    classOf[Double] -> 1,
    classOf[Int] -> 4
  )

“Class[_ >: Float with Int with Double], Int]”是什么意思?我了解在类声明期间可以使用 scala 关键字“with”,例如

Class person with glass { 

表示“人”类具有对象“玻璃”的特征。

如何解释上面代码中“with”的用法?

4

1 回答 1

2

with关键字用于表示交集类型

该类型Float with Int with Double基本上是FloatandInt和的子类型Double。当然,您不能拥有这种类型的实际值,因为Float,IntDouble都是最终类。在这里,在 typeMap[Class[_ >: Float with Int with Double], Int]中,它用于表示 的每个键Map都必须是Class[T]whereT必须是 的超类型Float with Int with Double。而这些超类型是Float,IntDouble(如果我们在继承链上往上走的话,还有 and )AnyValAny

于 2016-10-12T11:29:15.503 回答