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。もちろん、 、 、および はすべて最終クラスであるためFloatIntこのDouble型の実際の値を持つことはできません。ここで、 typeでは、 のすべてのキーがである必要があり、 のスーパータイプである必要があるMap[Class[_ >: Float with Int with Double], Int]ことを表現するために使用されます。そして、それらのスーパータイプは、および(継承チェーンの上位に行くと、およびおよび) です。MapClass[T]TFloat with Int with DoubleFloatIntDoubleAnyValAny

于 2016-10-12T11:29:15.503 に答える