Alamofire源码分析(3)——链式函数

不过是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。

当自己的代码经常需要同一个对象,或者同一系列的对象调用多个函数时,可以尝试链式调用。这样可以让代码更整体,更简洁,更易用。

你可能感兴趣的:(Alamofire源码分析(3)——链式函数)