scala – 这两个高阶函数有何不同?
发布时间:2020-12-16 10:00:41 所属栏目:安全 来源:网络整理
导读:以下两个高阶函数产生相同的结果,但我无法理解两者之间的差异.事实上,我不明白1).函数如何有两组()? 1) def sum(f: Int = Int) (a: Int,b: Int) = { def loop(a: Int,acc: Int) : Int = if (a b) acc else loop (a + 1,f(a) + acc) loop (a,0)} 2) def sum(
以下两个高阶函数产生相同的结果,但我无法理解两者之间的差异.事实上,我不明白1).函数如何有两组()?
1) def sum(f: Int => Int) (a: Int,b: Int) = { def loop(a: Int,acc: Int) : Int = if (a > b) acc else loop (a + 1,f(a) + acc) loop (a,0) } 2) def sum(f: Int => Int,a: Int,b: Int) = { def loop(a: Int,f(a) + acc) loop (a,0) } 解决方法
第一个功能是curry.这意味着您可以更轻松地部分应用它.如果您仅使用第一个参数列表,则该函数返回另一个具有签名(Int,Int)=>的函数.诠释.
如果您需要将具有特定函数签名的函数传递给更高阶函数(如map或reduce),这非常有用. 在其他函数式编程语言(如Haskell)中,所有函数都默认为curry. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- twitter-bootstrap-3 – Bootstrap Datepicker多个月
- Azure SQL Database Active Geo-Replication 简介
- twitter-bootstrap – 如何生成bootstrap 3.0文档
- Unix/Linux程序设计之getopt函数浅谈
- 如何在运行时检查内存地址是否可写?
- WebService远程调试时出现"无权查看网页"的错误
- 如何从我的Shell / Python脚本访问GMail(IMAP电子邮件)下载
- 单元测试异步scala代码
- scala – Spark:当加入2个大型DF时,大小超过Integer.MAX_V
- BootStrap 模态框点击遮罩层禁止关闭