作為一個(gè)iOS程序員基本上都應(yīng)該接觸過Masonry這個(gè)自動(dòng)布局庫。這個(gè)庫能夠幫助程序員極大程度的簡化自動(dòng)布局的代碼。通過點(diǎn)(.)調(diào)用的方式,將代碼連接成一行,大大增加了代碼的可讀性,這就是本篇要提到的鏈?zhǔn)骄幊獭1酒饕峭ㄟ^一個(gè)簡單的例子來實(shí)現(xiàn)上述的鏈?zhǔn)骄幊獭?/p>
計(jì)算器Demo
class CalculatorMaker {
static func add(num1 : Int,num2 : Int)->Int {
return result += num
}
static func sub(num1 : Int,num2 : Int)->Int {
return result -= num
}
}
使用方法:
let r1 = CalculatorMaker.add(num1: 1, num2: 2)
let r2 = CalculatorMaker.sub(num1: 4, num2: 3)
// 新需求: add和sub要做一個(gè)連續(xù)的運(yùn)算
let r3 = CalculatorMaker.add(n1: Calculator.add(num1: 1, num2: 2),n2: Calculator.sub(num1: 4, num2: 3))
此時(shí)r3太過復(fù)雜,我們需要對(duì)代碼用鏈?zhǔn)骄幊痰乃枷脒M(jìn)行優(yōu)化.
優(yōu)化1:
class CalculatorMaker {
var result : Int = 0
func add(num : Int)->Int {
result += num
return result
}
func sub(num : Int)->Int {
result -= num
return result
}
}
使用方法:
let alculator = CalculatorMaker()
alculator.add(num: 1)
alculator.sub(num: 2)
此時(shí),使用已經(jīng)比之前方便多了,但是還是不能連續(xù)點(diǎn)(·)的操作,所以繼續(xù)優(yōu)化.
優(yōu)化2:
class CalculatorMaker {
var result : Int = 0
func add(num : Int)->Calculator {
result += num
return self
}
func sub(num : Int)->Calculator {
result -= num
return self
}
}
使用方法:
let alculator = CalculatorMaker()
alculator.add(num: 1).sub(num: 2)
alculator.result
此時(shí)已經(jīng)可以用點(diǎn)(.)方法連續(xù)調(diào)用了,只是如果使用多次的話,每次都需要?jiǎng)?chuàng)建一個(gè)CalculatorMaker對(duì)象,所以還可以繼續(xù)優(yōu)化.
優(yōu)化3:
class CalculatorMaker {
var result : Int = 0
func add(num : Int)->CalculatorMaker {
result += num
return self
}
func sub(num : Int)->CalculatorMaker {
result -= num
return self
}
}
class Calculator {
static func beginCalculator( calculatorBlock:(CalculatorMaker)->()) -> Int{
let calculator = CalculatorMaker()
calculatorBlock(calculator)
return calculator.result
}
}
使用方法:
Calculator.beginCalculator { (calculator) in
calculator.add(num: 1).sub(num: 2)
}
很顯然,此時(shí)使用方法已經(jīng)很方便了,類似Masonry這個(gè)自動(dòng)布局庫的使用方法.該例子是一個(gè)簡單的鏈?zhǔn)骄幊痰膶W(xué)習(xí),鏈?zhǔn)骄幊踢€有很多強(qiáng)大的用處,期待日后進(jìn)一步的學(xué)習(xí).