如何解释scala语法;类[gt;:带双精度整数的浮点值]”;
当我阅读Mxnet源代码时,我被以下语句弄糊涂了:如何解释scala语法;类[gt;:带双精度整数的浮点值]”;,scala,syntax,keyword,mxnet,Scala,Syntax,Keyword,Mxnet,当我阅读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[Do
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
)
它对“类[\u>:Float with Int with Double],Int]”意味着什么?
例如,我知道scala关键字“with”可以在类声明期间使用
Class person with glass {
表示类“person”具有对象“glass”的特性
如何解释上述代码中“with”的用法?使用
with
关键字来表达
带双精度Int的
Float类型基本上是Float
和Int
和Double
的子类型。当然,您不能有这种类型的实际值,因为Float
、Int
和Double
都是最终类。这里,在类型Map[Class[\u>:Float with Int with Double],Int]
中,它用于表示Map
的每个键必须是Class[T]
,其中T
必须是Float with Int with Double
的超类型。这些超类型是Float
、Int
和Double
(和AnyVal
和Any
,如果我们在继承链的更高位置),那么它是否也可以是字符串,因为字符串是Any的子类型?什么可以是字符串?这里只有Class
对象。对不起,我指的是字符串类。Class
是不变的,所以通常不是val c:Class[\u>:Float with Int with Double]=classOf[String]
不编译。