对于以下总和方法:
def sum(term: (Int) => Int , next: (Int) => Int) : Int = {
0
}
如何访问函数term
如果我尝试:
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.
答案 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的参数不能以这种方式命名。