swift 关于闭包

记录学习到,关于闭包的点滴。

1:如果闭包是函数的最后一个参数,则可以将闭包写在()后面,也可以写在()里面

2:如果函数只有一个参数,并且该参数是闭包,那么()可以不写

闭包的用法:

1:可以为Int类型做一个拓展例如:

extension Int {

   

   func times(f: (Int) -> (Void)){

      print("Void")

      for i in 1...self{

         f(i)

      }

   }

}

//      let t = 10

//      t.times { (i:Int) in

//         print(i)

//      }

可以循环得到1至10的值。

2:可以封装一个闭包作为参数的函数,进行回调。

封装网络请求

class Client {

   static let shareInstance = HYClient()

   private init() {}

   func appPostRequest(_ path: String, parameters: Any?,done:(([String:AnyObject]?) -> Void)? = nil){

    let out = "你好"

      if let goods = done{

        goods(["out":out as AnyObject])

      }

   }

   func show(_ content:String,done:(_ cont:String) ->()){

      done("闭包参数")

   }

}

//

Client.shareInstance.appPostRequest("", parameters: nil, done:

         {obj in

            if let out = obj?["out"]{

              //这样就把值“你好”拿到了

            }

    })

      Client.shareInstance.show("参数", done:{(cont) ->() in

         //cont 值为“闭包参数”

      }

      )

关于闭包还有需要学习的地方

待续。。。。

原文地址:https://www.cnblogs.com/linximu/p/6293519.html