zoukankan      html  css  js  c++  java
  • [Swift]Closures概念与使用

    闭包在开发中那是相当常见,但其奇特的长相对初学者并不十分友好,现在我们就来看看闭包到底是个什么东西,可以怎么用?

    let a:Int -> Int
    let b:Int -> Int
    func squareFun(x: Int) -> Int {
        return x*x
    }
    a = squareFun
    b = {(x: Int) -> Int in return x*x}
    

     就像上面的实例代码,我们先定义了变量a,b是一个通过一个Int型值返回另一个Int型值的函数,然后把函数squareFun赋给a,而b则是以闭包的写法赋值,其效果是一样的。

    当我们使用闭包语法的时候,不需要指定参数类型和返回值类型,因为闭包语法会自动判断。

    b = {x in return x*x}
    

     甚至,我们可以省略关键字return:

    b = {x in x*x}
    

     还能再简单吗?当然可以!就是这么逆天!

    b = {$0 * $0}
    

     $0表示第一个传过来的参数,$1表示第二个。。。以此类推,就像这样:

    let a:(Int,Int) -> Int
    a = {$0 + $1}
    print(a(3,2))
    

    真是太简单了!

    数组有一个方法是以函数为参数的:map

    let array = [1,2,3]
    let a:Int -> Int
    a = {$0 + 2}
    let result = array.map(a)
    print(result)
    

     map返回一个包含自身映射变换后的数组。注意到没有?每次我们都要先定义一个变量表示函数,再定义闭包,其实,立即!马上!立刻!使用闭包的情况,我们是不需要定义这个变量的:

    let array = [1,2,3]
    let result = array.map({$0 + 2})
    print(result)
    
  • 相关阅读:
    C#调用默认浏览器打开网页的几种方法
    关于百度排名点击器作弊提升百度排名的说明
    网站被百度降权的各种原因大解析
    百度搜索引擎排名原理、因素
    【ASP.NET开发】获取客户端IP地址 via C#
    防抖和节流
    vuex
    watch 和 computed
    JavaScript捕获与冒泡与委托
    XSS攻击
  • 原文地址:https://www.cnblogs.com/ybw123321/p/5433810.html
Copyright © 2011-2022 走看看