【问题标题】:scala multi dimensional array representation in replrepl中的scala多维数组表示
【发布时间】:2021-09-22 10:43:08
【问题描述】:

我是 scala 的新手,我在 repl 中写了这个

val xx = Array.ofDim [String](3,4) 
xx: Array[Array[String]] = Array(Array(null, null, null, null), Array(null, null, 
         null, null), Array(null, null, null, null))

@ val yy = Array.ofDim [Int](3,4) 
  yy: Array[Array[Int]] = Array(Array(0, 0, 0, 0), Array(0, 0, 0, 0), Array(0, 0, 0, 0))

@ val ss = Array(xx, yy) 

导致了这个

ss: Array[Array[_1] forSome { type _1 >: Array[Int] with Array[String] <: Array[_1] forSome { type _1 >: Int with String } }] = Array(
Array(Array(null, null, null, null), Array(null, null, null, null), Array(null, null, null, null)),
Array(Array(0, 0, 0, 0), Array(0, 0, 0, 0), Array(0, 0, 0, 0))
)

谁能解释一下这是什么意思

Array[_1] forSome { type _1 >: Array[Int] with Array[String] <: Array[_1] forSome { type _1 >: Int with String } }

特别是 >: .....<: .... scala>

干杯,

es

【问题讨论】:

  • 由于xx & yy 有不同的类型,那么Array(xx, yy) 将是一个不太有用的Array[Any],奇怪的类型是因为Array 是不变的因此Array[Any]不会是合适的类型。 - 一般来说,不要使用Arrays 并且不要混合类型,如果您是该语言的新手,您可能做错了什么,也许可以解释您要解决的元问题。另外,我邀请您加入官方 Scala Discord 服务器来提出此类问题。
  • @LuisMiguelMejíaSuárez 我刚刚开始学习 scala 并在玩弄它,感谢不和谐的提示

标签: scala


【解决方案1】:

Scala 中的 forSome 关键字创建了一个存在类型。那是一种你不知道也不关心它究竟是什么的类型,你可以给它提供条件。更多in this answer

&lt;::&gt; 运算符表示类型绑定。像type A &lt;: B 这样的定义意味着,类型AB 的子类型。而type A &gt;: B的定义意味着AB的超类型。

在这种情况下(最后一个 sn-p),这意味着您有一个带有参数 _1 的数组,我们知道它是 Array[Int] with Array[String] 的超类型和 Array[_1] forSome { type _1 &gt;: Int with String } 的子类型

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-20
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多