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给你带来了这个功能. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |