Массив SAM Scala не разрешен

Кажется, вы не можете инициализировать массив с синтаксисом 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)

Ожидается ли такое поведение?


person uh_big_mike_boi    schedule 19.04.2018    source источник


Ответы (1)


Он работает в Scala 2.12, но поддержка SAM в Scala 2.11 неполная (поэтому он под -Xexperimental). Для Scala 2.11 вы можете использовать

Array[A](() => 5)

как обходной путь.

person Alexey Romanov    schedule 19.04.2018