代码之家  ›  专栏  ›  技术社区  ›  uh_big_mike_boi

不允许使用数组SAM Scala

  •  0
  • uh_big_mike_boi  · 技术社区  · 6 年前

    似乎无法使用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 回复  |  直到 6 年前
        1
  •  1
  •   Alexey Romanov    6 年前

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

    Array[A](() => 5)
    

    作为解决方法。