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

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

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等理解)