以下两个函数定义有什么区别?如果以前已经回答过,请耐心等待。我不知道第一种被称为正确搜索的函数是什么。
def f1(a: String, b: T)(c: String, d: String, e: String = "_id"): Unit = ???
和
def f1(a: String, b: T, c: String, d: String, e: String = "_id"): Unit = ???
我知道它与提到的问题类似here。
答案 0 :(得分:3)
<强> A1 强>:
<强> A2 强>:
编辑优势/劣势概念
lambda calculus
简洁性:
在理论计算机科学中,currying提供了一种学习方法 在非常简单的理论模型中具有多个参数的函数 例如lambda演算,其中函数只取一个 参数。
(这里很好的例子:https://en.wikipedia.org/wiki/Currying#Motivation)
Curried函数需要closure
支持:
Curried函数可以用于支持闭包的任何语言
性能的未解决的功能:
通常优选未使用的功能以提高效率 原因,因为部分申请和关闭的开销 对于大多数函数调用,可以避免创建。
库里 - 霍华德的通信:
currying和uncurrying的存在等同于逻辑 定理作为元组(产品 type)对应逻辑和函数类型的连接 对应暗示。