不允许使用阵列SAM Scala

时间:2018-04-19 18:56:08

标签: scala syntax scala-2.11 single-abstract-method

您似乎无法使用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)

预计会出现这种情况吗?

1 个答案:

答案 0 :(得分:1)

它适用于Scala 2.12,但Scala 2.11中的SAM支持不完整(这就是为什么它在-Xexperimental下)。对于Scala 2.11,您可以使用

Array[A](() => 5)

作为解决方法。