Scala中的curried函数背后的基本原理是什么?
发布时间:2020-12-16 09:02:33 所属栏目:安全 来源:网络整理
导读:我只是 Scala的新手,对我来说似乎有点困惑,为什么Scala提供“curried functions”,例如: //curried functiondef add(lhs: Int)(rhs: Int) = lhs + rhs//so we can do partially binding likeval add1 = add(1)_ 它令人困惑,因为Scala已经为正常功能提供了“
我只是
Scala的新手,对我来说似乎有点困惑,为什么Scala提供“curried functions”,例如:
//curried function def add(lhs: Int)(rhs: Int) = lhs + rhs //so we can do partially binding like val add1 = add(1)_ 它令人困惑,因为Scala已经为正常功能提供了“部分应用”,例如, //normal function def add(lhs: Int,rhs: Int) = lhs + rhs //also supports partially application val add1 = add(1,_: Int) 所以我的问题是:除了部分应用之外,还有其他方面使用curried函数而不是Scala中的普通函数吗? EDT1:感谢您的回复.我想我从下面的所有答案中学到了新东西. 解决方法
把理论动机放在一边(参见:维基百科中的
Contrast with partial function application关于currying),有一个实际的含义.当最后一个参数是一个代码块时,语法更简单,更易读.
比较以下方法: def test1(name: String,callback: => Unit) {} def test2(name: String)(callback: => Unit) {} 第二种方法调用看起来更好,比较: test("abc",{ //some code }) test2("abc") { //some code } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |