• Welcome to Swift (苹果官方Swift文档初译与注解三十七)---261~265页(第六章-- 闭包)


    Inferring Type From Context 上下文类型判断

      因为排序的闭包是作为一个参数传递给函数,因此Swift可以判定这个参数的类型和根据sort函数第二个参数判断返回值的类型.这个参数的类型是(String, String) -> Bool,这意味着   String,String以及Bool类型都不需要在闭包定义的时候声明.因为所有的类型都可以由系统判定.因此,返回箭头以及参数名字的括号都可以省略:

        reversed = sort(names, { s1, s2 in return s1 > s2 } )

      当在闭包在传递给函数的时候,总是默认的会判定参数的类型和返回值的类型,因此你很少需要自己写一个标准完整的闭包格式.

      无论怎样,你可以按照你希望的样子显示的声明类型.为了避免歧义性,这样的方式是积极鼓励推荐的.在sort函数的例子中,闭包的目的是非常清晰.

    Implicit Returns from Single-Expression Closures (单表达式闭包的隐式返回)

      单表达式闭包可以通过忽略关键字return,隐式的返回单表达式的结果:

        reversed = sort(names, { s1, s2 in s1 > s2 } )

      在这里,sort函数类型的第二个参数明确的要求闭包返回一个Bool值,因为闭包体包含一个单表达式(s1 > s2),它返回一个Bool值,这样可以忽略return关键字.

    Shorthand Argument Names (缩写的参数名)

      Swift中,系统自动的为内联闭包提供了参数缩写名,$0,$1,$2..等等,它可以用来代指闭包参数的值.

      如果你在闭包表达式中使用了缩写名,你可以忽略闭包参数列表,缩写名的值和类型系统会根据函数类型推断出来,并且int关键字也可以省略.:

        reversed = sort(names, { $0 > $1 } )

      这里,$0,$1代指闭包的第一个和第二个参数.

    Operator Functions (操作函数)

      上面的闭包表达式实际上有更短的写法.

      Swift的String类型定义了一个专门的大于操作方法(>)用于有两个String类型参数的函数,它返回一个Bool类型的值,这刚刚好匹配了sort函数的第二个参数需求,因此你可以简单的传一  个大于操作(>),系统将判断出你需要的东西:

      reversed = sort(names, >)

  • 相关阅读:
    关于slot标签的使用
    vue组件
    template和component的理解(待更正)
    input 的属性autocomplete
    关于render: h => h(App)和components: { App }的区别
    关于vue的简单知识
    获取页面跳转携带的参数
    关于跨域的简单想法(此想法是错误的,特此备注)
    关于jq建立类似与双向绑定的函数
    关于jq将一个页面引入另一个页面,类似与组件化的解决方案
  • 原文地址:https://www.cnblogs.com/caios/p/3879213.html
Copyright © 2020-2023  润新知