首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何访问函数参数的函数参数?

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

Stack Overflow用户
提问于 2014-08-14 20:52:41
回答 2查看 106关注 0票数 1

关于以下和法:

代码语言:javascript
复制
  def sum(term: (Int) => Int , next: (Int) => Int) : Int = {
        0
  }

如何访问函数term的Int参数

如果我试着:

代码语言:javascript
复制
  def sum(term: (param : Int) => Int , next: (Int) => Int) : Int = {
        0
  }

我收到错误:

代码语言:javascript
复制
Multiple markers at this line - only classes can have declared but undefined members - not found: type param - 
 ')' expected but ':' found.
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-14 21:00:26

term: (Int) => Int简单地告诉编译器,您将传入一个接受Int参数并返回另一个Int的函数,因此不需要绑定该变量:

代码语言:javascript
复制
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函数并传入要应用于要传递的函数的参数:

代码语言:javascript
复制
def sum(someInt: Int)(term: (Int) => Int) : Int = {
  term(someInt)
}

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

Stack Overflow用户

发布于 2014-08-14 20:58:22

您不能,就像应用sum时一样,尚未调用传递的term函数。顺便说一下,在第二个代码中有一个语法错误,因为lambda的参数不能用这种方式命名。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25317401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档