闭包

作者: Smallwolf_JS | 来源:发表于2022-04-10 22:59 被阅读0次
// 1. 最简单的闭包 ()-> ()没有参数,没有返回值的函数 in 可以省略
            let b1 = {
                print("hello world")
            }
            // 执行闭包
            b1()
            
            // 2. 带参数的闭包 参数、返回值、实现代码 都写在{} 中
            // { 形参列表 -> 返回值类型  实现代码 }
            // 使用 in 分割定义和实现 b2 的类型: (Int)-> ()
            let b2 = {(x: Int) -> () in
                print(x)
            }
            // 执行闭包
            b2(100)
            
            // 3. 带参数/返回值的闭包
            // (Int) -> Int
            let b3 = {(y: Int) -> Int in
                return y + 250
            }
            // 执行闭包
            print(b3(30))
            
            // 4.异步执行任务,获取数据,通过b1ock/闭包回调,闭包的应用场景和闭包一样
            // 5 .尾随闭包 如果函数的最后一个参数是闭包,函数的参数可以提前结束,最后一个参数直接使用,包装闭包的代码

            // loadData () { (result) in
            //      print (result)
            // }
            loadData { (result) in
                print (result)
            }
            //按照函数的本身编写
            loadData (completion: {(result)->0in
                print (result)
            })
            func demo1 ({
                //尾随闭包
                DispatchQueue.global() .async f
                    //嵌套的GCD xcode不会改成尾随闭包
                    DispatchQueue.main.async(execute:
                    
                    })
                }
                //尾随闭包
                DispatchQueue.main.async{}
            }
           
           func loadData(completion: (result: [String]) -> ()) ->() {
                //将任务添加到队列,执行任务的操作,队列的调度是以同步/异步执行任务
                DispatchQueue.global().async{
                    print"耗时操作\ (Thread .current ()"
                    //休眠
                    Thread.sleep (forTimeInterval : 1 .0)
                    //获得数据
                    let json =["头条”,“八卦","出大事了"
                    //主线程更新
                    DispatchQueue.main. async (execute: f
                        print("主线程更新UI\(Thread.current())")
                        //回调,执行,通过参数回调
                        completion (result: ison)
                    })
                }
            }
            
            //1. 使用变量记录函数
            func demo (
            let x: Int = sum(x: 20,y: 30)
            print (nsum = 1(x)")
            // 闭包:提前准备好代码,需要的时候执行,可以当做参数传递
            // 定义一个常量记录函数(x:Int, y:Int) 一>Int
            let f = sum
            //在需要的时候执行 在oC是不能实现
            print (f(x:30,y:30))
            func sum (x:Int,y:Int) -> Int{
                return x +y
            }
            

相关文章

  • swift-闭包

    闭包 闭包定义 闭包简化 - 尾随闭包 闭包参数 闭包返回值 闭包的循环引用

  • 闭包,闭包,闭包

    1、这家伙到底是什么? 网上关于这个的讨论的太多了太多了,有各种的举例子,但是大部分还在寻找这个答案的小伙伴对于变...

  • 闭包-Closures [swift 5.1]

    闭包的语法 尾随闭包 闭包逃离 自动闭包

  • Day7 闭包(Closures)

    本页包含内容:• 闭包表达式• 尾随闭包• 值捕获• 闭包是引用类型• 逃逸闭包• 自动闭包 1、闭包表达式 闭包...

  • Python闭包

    闭包 = 环境变量 + 函数 调用闭包内部的环境变量 闭包的经典误区 闭包与非闭包实现人类走路 非闭包 闭包

  • 闭包(closure)

    ● 闭包基础 ● 闭包作用 ● 闭包经典例子 ● 闭包应用 ● 闭包缺点 ● 参考资料 1、闭包基础 作用域和作...

  • swift- 闭包一

    /*• 闭包表达式• 尾随闭包• 值捕获• 闭包是引用类型• 逃逸闭包• 自动闭包*/

  • (9) python之闭包

    闭包闭包 = 函数 + 环境变量(函数定义的时候) 一个最简单的闭包 闭包不受外部变量影响 非闭包 闭包 闭包 只...

  • Swift-进阶 :闭包(二)逃逸闭包 & 非逃逸闭包

    本文主要分析逃逸闭包 、非逃逸闭包、自动闭包 逃逸闭包 & 非逃逸闭包 逃逸闭包定义 当闭包作为一个实际参数传递给...

  • javascript闭包详解

    跟我念 bi 闭 bao包 ,闭包的闭,闭包的包。。 闭包的简介 在计算机科学中,闭包(英语:Closure),又...

网友评论

      本文标题:闭包

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