美文网首页swift
swift 闭包简写实际参数名$0、$1等理解

swift 闭包简写实际参数名$0、$1等理解

作者: 指尖猿 | 来源:发表于2018-03-06 17:49 被阅读14次

    刚入手公司的代码,发现如下几句话

    if printer.sn != self.mineDevice.deviceSn {
                       _ = self.appendNewDevice(device: printer, deviceList: &self.foundList)
                       if self.appendNewDevice(device: printer, deviceList: &self.deviceList) {
                          
                           self.deviceList.sort { $0.sn < $1.sn }
                           self.tableView.reloadData()
                       }
                   }
    

    后面查询到
    Swift 自动对行内闭包提供简写实际参数名,你也可以通过 $0 , $1 , $2 等名字来引用闭包的实际参数值。

    如果你在闭包表达式中使用这些简写实际参数名,那么你可以在闭包的实际参数列表中忽略对其的定义,并且简写实际参数名的数字和类型将会从期望的函数类型中推断出来。 in 关键字也能被省略,因为闭包表达式完全由它的函数体组成:

    let numbers = [3,2,4,1,5,7,6];
     
    var sortedNumbers = numbers.sorted(by:{$0 < $1});
    print(sortedNumbers);//输出为:[1, 2, 3, 4, 5, 6, 7]
     
    sortedNumbers = numbers.sorted(by:{$1 < $0});
    print(sortedNumbers);//输出为:[7, 6, 5, 4, 3, 2, 1]
    

    可以看出,可以用$0、$1、$2来表示调用闭包中参数,$0指代第一个参数,$1指代第二个参数,$2指代第三个参数,以此类推$n+1指代第n个参数,$后的数字代表参数的位置,一一对应。

    如果你要点赞  去https://www.cnblogs.com/weixw/p/5885493.html
    

    相关文章

      网友评论

        本文标题:swift 闭包简写实际参数名$0、$1等理解

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