如何访问函数参数的函数参数?

时间:2014-08-14 20:52:41

标签: scala

对于以下总和方法:

  def sum(term: (Int) => Int , next: (Int) => Int) : Int = {
        0
  }

如何访问函数term

的Int参数

如果我尝试:

  def sum(term: (param : Int) => Int , next: (Int) => Int) : Int = {
        0
  }

我收到错误:

Multiple markers at this line - only classes can have declared but undefined members - not found: type param - 
 ')' expected but ':' found.

2 个答案:

答案 0 :(得分:1)

term: (Int) => Int只是告诉编译器你传入了一个带有Int参数并返回另一个Int的函数,没有必要绑定变量:< / p>

scala> def sum(term: (Int) => Int) : Int = {
 |       term(10)
 |     }
sum: (term: Int => Int)Int

scala> def useSum() = {
 |       sum {
 |         someInt =>
 |           someInt + 1
 |       }
 |     }
useSum: ()Int

scala> useSum
res6: Int = 11

您还可以调用sum函数并传入要应用于要传递的函数的参数:

def sum(someInt: Int)(term: (Int) => Int) : Int = {
  term(someInt)
}

def useSum(someInt: Int) = {
  sum(someInt) {
    someInt =>
      someInt + 1
  }
}

答案 1 :(得分:0)

您无法在应用sum时通过term功能尚未调用。顺便说一下,第二个代码中存在语法错误,因为lambda的参数不能以这种方式命名。

相关问题