关于以下和法:
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.发布于 2014-08-14 21:00:26
term: (Int) => Int简单地告诉编译器,您将传入一个接受Int参数并返回另一个Int的函数,因此不需要绑定该变量:
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
}
}发布于 2014-08-14 20:58:22
您不能,就像应用sum时一样,尚未调用传递的term函数。顺便说一下,在第二个代码中有一个语法错误,因为lambda的参数不能用这种方式命名。
https://stackoverflow.com/questions/25317401
复制相似问题