不过是RxSwift还是Alamofire,都是链式函数,这种写法可以让局部代码更像一个整体,显得更简洁,多函数调用更方便,比如:
Alamofire.download(urlStr)
.responseJSON { (response) in
print("写了什么不重要")
}.downloadProgress { (p) in
}.response { (data) in
}.responseString { (str) in
print("不用在意这些细节")
}
-
链式本质
我们分别进入源码看看:
从上面代码可以发现:链式函数的本质就是不断返回对象(本类或者其他类)
-
自己实现链式
那我们也来试一下:
class Person: NSObject {
func run() -> Self {
print("run")
return self
}
func sleep() -> Self {
print("sleep")
return self
}
func eat() -> Self {
print("eat")
return self
}
}
let p = Person()
p.run()
.eat()
.sleep()
打印结果:run,eat,sleep。
当自己的代码经常需要同一个对象,或者同一系列的对象调用多个函数时,可以尝试链式调用。这样可以让代码更整体,更简洁,更易用。