SaR*_* DM 6 arrays macos foreach ios swift
我已经看到大多数swift开发人员都开始使用.forEach,了解它的另一种迭代数组的方法.但是'$ 0'的含义是什么?它是如何工作的?如果它是一个索引,那么它应该增加0,1,2 ......
@IBOutlet var headingLabels: [UILabel]!
....
headingLabels.forEach { $0.attributedText = NSAttributedString(string: $0.text!, attributes: [NSKernAttributeName: 1]) }
Run Code Online (Sandbox Code Playgroud)
Luc*_*tti 12
看看这段代码
let nums = [1,2,3,4]
nums.forEach { print($0) }
Run Code Online (Sandbox Code Playgroud)
这里的关闭如下 forEach
我的意思是这部分
{ print($0) }
执行4次(对于数组中的每个元素一次).每次执行时间$0包含副本中的n-th你的元素nums数组.
所以第一次包含
1,然后2等等......
这是输出
1
2
3
4
Run Code Online (Sandbox Code Playgroud)
forEach与for-in构造比较那么我们可以说tha $0就像n下面代码中的值一样吗?
for n in nums {
print(n)
}
Run Code Online (Sandbox Code Playgroud)
是的,它具有几乎相同的含义.
该forEach方法接受一个闭包.关闭有这个签名.
(Self.Generator.Element) throws -> Void
Run Code Online (Sandbox Code Playgroud)
当你使用forEach它时,与你签订"合同".
forEach一个闭包,它接受输入中的单个参数,其中param具有相同类型的ArrayforEach闭包应用于数组的每个元素.nums.forEach { (n) in
print(n)
}
Run Code Online (Sandbox Code Playgroud)
但是在Swift中,您可以省略闭包参数的显式名称.在封闭内部,您可以将params $0用于第一个参数,$1第二个参考等等.
所以前面的代码片段也可以写成如下所示
nums.forEach {
print($0)
}
Run Code Online (Sandbox Code Playgroud)
速记参数名称
Swift自动为内联闭包提供简写参数名称,可用于通过名称$ 0,$ 1,$ 2等引用闭包参数的值.
如果在闭包表达式中使用这些简写参数名称,则可以从其定义中省略闭包的参数列表,并且将从期望的函数类型推断缩写参数名称的数量和类型.in关键字也可以省略,因为闭包表达式完全由它的主体组成:
reversed = names.sort({$ 0> $ 1})这里,$ 0和$ 1引用闭包的第一个和第二个String参数.
| 归档时间: |
|
| 查看次数: |
12508 次 |
| 最近记录: |