当我阅读 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'的用法?
最佳答案
with
关键字用于表示intersection types .
类型 Float with Int with Double
基本上是 Float
和 Int
和 Double
的子类型。当然,您不能拥有此类型的实际值,因为 Float
、Int
和 Double
都是最终类。这里,在类型Map[Class[_ >: Float with Int with Double], Int]
中,用来表示Map
的每个键都必须是一个 Class[T]
,其中 T
必须是 Float with Int with Double
的父类(super class)型。这些父类(super class)型是 Float
、Int
和 Double
(以及 AnyVal
和 Any
,如果我们走上继承链的更高层)。
关于scala - 如何解释此 Scala 语法 "Class[_ >: Float with Int with Double]",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39995720/