如何解释scala语法;类[gt;:带双精度整数的浮点值]”;

如何解释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

当我阅读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
  )
它对“类[\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]
不编译。