scala Functonal abstraction(List)无效

时间:2017-07-16 07:06:16

标签: scala functional-programming

请帮我解决这个scala在下面的上下文中抛出错误

def SelectValues(list: List[Int],sel:Int => Boolean) ={
      var sum =0
      list.foreach{ e =>
        if(sel(e)) sum += e
      }
      sum
      println(sum)
    }

    println(SelectValues(List(1,2){e => true}))

enter image description here'屏幕截图

1 个答案:

答案 0 :(得分:2)

问题在于你的println专栏:

println(SelectValues(List(1,2){e => true}))

List(1,2)和{e =>之间没有逗号。 true}这意味着您要向SelectValues发送一个参数:

List(1,2){e => true}

这相当于:

List(1,2)(f)

其中f是函数。即你试图从列表(1,2)调用一个函数(在这种情况下应用),而不是发送第二个参数(sel)。

编译器首先分析SelectValues签名(在确定你的对象之前)并且只看到一个参数。

要解决此问题,只需添加缺少的逗号:

println(SelectValues(List(1,2), {e => true}))