美文网首页
Swift学习笔记4-函数、闭包、懒加载

Swift学习笔记4-函数、闭包、懒加载

作者: Simple_Code | 来源:发表于2017-07-16 17:36 被阅读89次

    函数

    Swift定义函数的格式:
    语义:将前面计算的结果返回给 ->返回值
    func 函数名称(参数列表) -> 返回值
    {
            执行代码
    }
    

    练习

    没有返回值没有参数
    //创建方法一
    func talk1() -> Void
    {
        print("Swift")
    }
    talk1()
    //创建方法二
    func talk2() ->()
    {
        print("Swift")
    }
    talk2()
    //创建方法三
    func talk3()
    {
        print("Swift")
    }
    talk3()
    
    有返回值没有参数
    func getString() -> String
    {
        return "Swift"
    }
    getString()
    
    有参数没有返回值
    func sum1(a:Int,b:Int)
    {
        print(a + b)
    }
    sum1(a: 4, b: 4)
    
    有参数有返回值
    func sum2(a:Int,b:Int) -> Int
    {
        return a + b;
    }
    print(sum2(a: 4, b: 4))
    
    • 总结
      • 如果没有返回值, -> 返回值 可以省略
      • 默认情况下,在调用函数时,第一个参数名是省略的

    闭包

    • 闭包定义
    闭包格式
            {
                (参数) -> 返回值类型 
                in
                执行语句
            }
    
    实例:
            loadData { () -> () in
                print("执行回调")
            }
    
    • 闭包三种简化
    1.如果没有参数, 没有返回值, in和in之前的东西可以省略
    2.如果闭包是函数的最后一个参数, 可以写在()后面  -- 尾随闭包
    3.如果只有一个闭包参数, 那么()也可以省略  -- 尾随闭包
            loadData ({
                print("执行回调")
            })
          
            loadData(){
                print("执行回调")
            }
            loadData{
                print("执行回调")
            }
    
    func loadData(_ finished: () -> ()){
            print("耗时操作")
            
            // 回调
            finished()
     }
    
    
    • 闭包参数
    loadData("xiaoming") { () -> () in
                print("执行回调")
     }
    
    func loadData3(_ name: String, finished: () -> ()){
            print("name = \(name)")
            finished()
    }
    
    • 闭包返回值
    • 闭包的循环引用
    weak var weakSelf = self
    demo("zhangsan") { (_) -> Int in
        print(weakSelf?.view.backgroundColor)
        return 20
    }
    

    懒加载创建方式

    //MARK: -View懒加载
    lazy var View: UIView = {
        let view = UIView(frame:CGRect(x: 0, y: 0, width: 100, height: 100))
        view.backgroundColor = UIColor.redColor()
        return view
    }()
    
    //MARK: -TableView懒加载
        lazy var zyTableView: UITableView = {
            let tempTableView = UITableView (frame: self.view.bounds, style: UITableViewStyle.plain)
            tempTableView.delegate = self
            tempTableView.dataSource = self
            return tempTableView
        }()
    
    //MARK: -数组懒加载
    lazy var dataList: [String] = {
            print("我懒加载了")
            return ["lnj", "lmj", "why"]
        }()
    
    • 格式:
    lazy var 变量: 类型 = { 创建变量代码 }()
    
    • 懒加载的写法本质上是定义并执行一个闭包

    相关文章

      网友评论

          本文标题:Swift学习笔记4-函数、闭包、懒加载

          本文链接:https://www.haomeiwen.com/subject/toxxkxtx.html