加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 函数参数类型和=>

发布时间:2020-12-16 09:47:41 所属栏目:安全 来源:网络整理
导读:方法参数的声明是什么意思: def myFunc(param: = Int) = param =在高清晰度? 解决方法 这是所谓的pass-by-name。这意味着您传递的函数应该返回Int,但主要用于实现参数的延迟评估。它有点类似于: def myFunc(param: () = Int) = param 这里是一个例子。考
方法参数的声明是什么意思:

def myFunc(param: => Int) = param

=>>在高清晰度?

解决方法

这是所谓的pass-by-name。这意味着您传递的函数应该返回Int,但主要用于实现参数的延迟评估。它有点类似于:

def myFunc(param: () => Int) = param

这里是一个例子。考虑一个返回一些Int值的answer函数:

def answer = {println("answer"); 40}

和两个函数,一个采用Int和一个采用Int by-name:

def eagerEval(x: Int) = {println("eager"); x;}
def lazyEval(x: => Int) = {println("lazy"); x;}

现在使用答案执行它们:

eagerEval(answer + 2)
> answer
> eager

lazyEval(answer + 2)
> lazy
> answer

第一种情况是显而易见的:在调用eagerEval()回答之前评估并打印“answer”字符串。第二种情况更有趣。我们实际上是传递一个函数到lazyEval()。 lazyEval首先打印“lazy”并计算x参数(实际上,调用作为参数传递的x函数)。

也可以看看

> Scala Returning a void function with 0 parameters,ugly syntax?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读