柯里化的代碼,看起來更加的簡潔優雅,提高代碼複用性。
例如我們要用班級和姓名來拼接一個字符串。
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("李雷")用起來是不是更佳簡潔。