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)
    
  • 相关阅读:
    逻辑思维题:称金币
    Windows7中Emacs 24 shell使用Gitbash
    Android中Touch事件分析--解决HorizontalScrollView滑动和按钮事件触发问题
    hdu 3732 Ahui Writes Word
    lucene基本原理
    elasticsearch分析系列
    主流的自动化运维工具
    IDEA在当前类中查找方法快捷键--转
    迷你MVVM框架 avalonjs 0.81发布
    最火的前端开源项目
  • 原文地址:https://www.cnblogs.com/ybw123321/p/5433810.html
Copyright © 2011-2022 走看看