数组 SAM Scala 不允许

Array SAM Scala not allowed

您似乎无法使用 SAM 语法初始化数组。当我尝试以下操作时...

trait A {
  def num(): Int
}

trait B extends A

trait C extends A

val nums: Array[A] = Array(() => 5)

我收到以下错误...

<console>:12: error: type mismatch;
 found   : () => Int
 required: A
       val nums: Array[A] = Array(() => 5)

这种行为是预期的吗?

它在 Scala 2.12 中有效,但 Scala 2.11 中的 SAM 支持不完整(这就是它在 -Xexperimental 下的原因)。对于 Scala 2.11,您可以使用

Array[A](() => 5)

作为解决方法。