zoukankan      html  css  js  c++  java
  • 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 值为“闭包参数”

          }

          )

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

    待续。。。。

  • 相关阅读:
    HDU 5087 (线性DP+次大LIS)
    POJ 1064 (二分)
    Codeforces 176B (线性DP+字符串)
    POJ 3352 (边双连通分量)
    Codeforces 55D (数位DP+离散化+数论)
    POJ 2117 (割点+连通分量)
    POJ 1523 (割点+连通分量)
    POJ 3661 (线性DP)
    POJ 2955 (区间DP)
    LightOJ 1422 (区间DP)
  • 原文地址:https://www.cnblogs.com/linximu/p/6293519.html
Copyright © 2011-2022 走看看