柯里化的代码,看起来更加的简洁优雅,提高代码复用性。
例如我们要用班级和姓名来拼接一个字符串。
func conventionFunc(_ calssName: String,name:String) -> String {
return "\(calssName) (\(name))"
}
let aa = conventionFunc("大班", name: "韩梅梅")
let bb = conventionFunc("大班", name: "李雷")
print(aa) //大班 (韩梅梅)
print(bb) //大班 (李雷)
可以发现calssName这个参数相同,可不可以优化呢?
我们在编程的时候,可能函数的参数都一样。每次都输入相同的参数看起来不够优雅,也不够简介。我们可以考虑使用柯里化
func curryingFunc(_ calssName: String ) -> (String) -> String {
return {
value in
return "\(calssName) (\(value))"
}
}
let currying = curryingFunc("大班")
let b = currying("韩梅梅")
let c = currying("李雷")
print(currying) //(Function)
print(b) //大班 (韩梅梅)
print(c) //大班 (李雷)
把一个函数,我们拆成多个步骤来实现。
假如班级有60个同学,calssName我们只输入一次即可,currying("李雷")用起来是不是更佳简洁。