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

简介: 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


相关文章
|
5月前
|
存储 Swift
Swift 语言:什么是闭包(Closure)?它们与函数的区别是什么?
Swift 语言:什么是闭包(Closure)?它们与函数的区别是什么?
104 1
|
5月前
|
存储 Swift
Swift中,函数和闭包
Swift中,函数和闭包
57 1
|
前端开发 Swift 数据安全/隐私保护
Swift实用小册01:参数声明、数据类型、命名方式、代码注释
Swift实用小册01:参数声明、数据类型、命名方式、代码注释
224 1
|
缓存 前端开发 Swift
Swift实用小册06:函数的定义、参数、返回、调用
Swift实用小册06:函数的定义、参数、返回、调用
224 0
Swift实用小册06:函数的定义、参数、返回、调用
|
存储 编译器 Swift
Swift5.0 - day4-闭包、属性、方法、下标
Swift5.0 - day4-闭包、属性、方法、下标
318 0
Swift5.0 - day4-闭包、属性、方法、下标
|
存储 编译器 开发者
Swift-进阶 09:闭包(二)逃逸闭包 & 非逃逸闭包
Swift-进阶 09:闭包(二)逃逸闭包 & 非逃逸闭包
512 0
Swift-进阶 09:闭包(二)逃逸闭包 & 非逃逸闭包
|
存储 Swift C++
Swift-进阶 09:闭包(一)使用&捕获原理
Swift-进阶 09:闭包(一)使用&捕获原理
482 0
Swift-进阶 09:闭包(一)使用&捕获原理
|
存储 编译器 Swift
Swift - 闭包捕获值原理分析
先说原理本质: 编译器在堆上开辟空间,存放了捕获的值
Swift - 闭包捕获值原理分析
【Swift4】(6) 闭包 | 闭包应用 | 闭包作为函数参数 | 捕获特性
【Swift4】(6) 闭包 | 闭包应用 | 闭包作为函数参数 | 捕获特性
112 0
|
存储 Swift
Swift5.1—尾随闭包
Swift5.1—尾随闭包
253 0