一般函數(shù)調(diào)用
//0.一般函數(shù)調(diào)用
var someClosure = {
(param: String) in
print(param)
}
someClosure("call some closure")
// = "call some closure"
鏈?zhǔn)秸{(diào)用
//1.鏈?zhǔn)秸{(diào)用-返回值是函數(shù),并且函數(shù)的返回值是調(diào)用者本身,可以構(gòu)成鏈?zhǔn)秸{(diào)用
class Home {
typealias SELF = Home
var run1:(String) -> SELF {
return {
print($0)
return self
}
}
var run2:(String) -> SELF {
return {
print($0)
return self
}
}
func runrun() {
run1("1").run2("2")
}
}
Home().runrun()
= /*
1
2
*/
struct MyFactory {
var result = 0
mutating func calculate(closure:(Int) -> Int) -> MyFactory {
result = closure(result)
return self
}
}
class ViewController {
func myClick() {
var calc = MyFactory()
let result = calc.calculate {
var rs = $0 + 10
rs *= 10
return rs
}.result
print(result)
}
}
ViewController().myClick() // = 100
主要流向
參考資料來源:http://valiantcat.com/