Swift: Curry 函数的好处
Swift: Benefits of Curry Function
我正在尝试掌握 curry 函数背后的概念。下面是代码:
class MyHelloWorldClass {
func helloWithName(name: String) -> String {
return "hello, \(name)"
}
}
我可以创建一个指向 class 的 helloWithName
函数的变量:
let helloWithNameFunc = MyHelloWorldClass.helloWithName
// MyHelloWorldClass -> (String) -> String
我的新 helloWithNameFunc
是 MyHelloWorldClass -> (String) -> String
类型,一个 function
接受我的 class
和 returns
另一个 [=17= 的实例] 接受 string
值和 returns 一个 string
值。
所以我实际上可以这样称呼我的 function
:
let myHelloWorldClassInstance = MyHelloWorldClass()
helloWithNameFunc(myHelloWorldClassInstance)("Mr. Roboto")
// hello, Mr. Roboto
来源:我从这个 site
中获取这段代码
使用上面的 curry 函数有什么好处?什么时候需要调用一个采用其 class 实例的函数,该函数采用传递的后续参数。
问题是给出的例子并不是柯里化的例子。这就是为什么你看不到它的任何价值。
这是柯里化的一个更好的例子:
class MyHelloWorldClass {
//Function that takes two arguments
func concatenateStrings(string1: String, string2: String) {
return "\(string1)\(string2)"
}
//Curried version of concatenateStrings that takes one argument.
func helloWithName(name: String) -> String {
return concatenateStrings("hello, ", name)
}
}
这是函数变量如何在 Swift 中柯里化函数的更好示例:http://oleb.net/blog/2014/07/swift-instance-methods-curried-functions/
我正在尝试掌握 curry 函数背后的概念。下面是代码:
class MyHelloWorldClass {
func helloWithName(name: String) -> String {
return "hello, \(name)"
}
}
我可以创建一个指向 class 的 helloWithName
函数的变量:
let helloWithNameFunc = MyHelloWorldClass.helloWithName
// MyHelloWorldClass -> (String) -> String
我的新 helloWithNameFunc
是 MyHelloWorldClass -> (String) -> String
类型,一个 function
接受我的 class
和 returns
另一个 [=17= 的实例] 接受 string
值和 returns 一个 string
值。
所以我实际上可以这样称呼我的 function
:
let myHelloWorldClassInstance = MyHelloWorldClass()
helloWithNameFunc(myHelloWorldClassInstance)("Mr. Roboto")
// hello, Mr. Roboto
来源:我从这个 site
中获取这段代码使用上面的 curry 函数有什么好处?什么时候需要调用一个采用其 class 实例的函数,该函数采用传递的后续参数。
问题是给出的例子并不是柯里化的例子。这就是为什么你看不到它的任何价值。
这是柯里化的一个更好的例子:
class MyHelloWorldClass {
//Function that takes two arguments
func concatenateStrings(string1: String, string2: String) {
return "\(string1)\(string2)"
}
//Curried version of concatenateStrings that takes one argument.
func helloWithName(name: String) -> String {
return concatenateStrings("hello, ", name)
}
}
这是函数变量如何在 Swift 中柯里化函数的更好示例:http://oleb.net/blog/2014/07/swift-instance-methods-curried-functions/