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

Scala函数定义参数列表中的不同括号样式

发布时间:2020-12-16 18:55:45 所属栏目:安全 来源:网络整理
导读:Scala中以下两个函数定义的区别是什么: 1)def sum(f:Int = Int)(a:Int,b:Int):Int = { code removed } 2)def sum(f:Int = Int,a:Int,b:Int):Int = { code removed } ? SBT的控制台REPL为它们提供了不同的价值,因此看起来它们是否有所不同: sum:(
Scala中以下两个函数定义的区别是什么:

1)def sum(f:Int => Int)(a:Int,b:Int):Int = {< code removed> }

2)def sum(f:Int => Int,a:Int,b:Int):Int = {< code removed> }

SBT的控制台REPL为它们提供了不同的价值,因此看起来它们是否有所不同:

sum:(f:Int => Int,b:Int)Int

sum:(f:Int => Int)(a:Int,b:Int)Int

解决方法

第一个定义是 curried,因此您可以在另一个时间提供a和b.

例如,如果您知道要在当前方法中使用的函数,但还不知道参数,则可以使用它:

def mySum(v: Int): Int = v + 1
val newsum = sum(mySum) _

在这一点上,newsum是一个函数,它接受两个Ints并返回一个Int.

在总结的背景下,它似乎没有多大意义;然而,有很多次我想根据我现在知道的东西返回不同的程序部分算法,但是还不知道(或有权访问)参数.

Currying给你带来了这个功能.

(编辑:李大同)

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

    推荐文章
      热点阅读