我看到大多数 swift 开发人员都开始使用 .forEach,了解它是迭代数组的另一种方式。但“$0”的含义是什么以及它是如何工作的?如果它是一个索引那么它应该增加 0,1,2...
@IBOutlet var headingLabels: [UILabel]!
....
headingLabels.forEach { $0.attributedText = NSAttributedString(string: $0.text!, attributes: [NSKernAttributeName: 1]) }
简短回答
看这段代码
let nums = [1,2,3,4]
nums.forEach { print($0) }
这里关闭如下forEach
我的意思是这部分{ print($0) }
执行 4 次(数组中的每个元素执行一次)。每次执行时$0
包含一个copy of the n-th
你的元素nums
array.
所以第一次包含1
, then 2
等等...
这是输出
1
2
3
4
比较forEach
与for-in
构造
那么我们可以说$0
就像n
下面代码中的值?
for n in nums {
print(n)
}
是的,它的含义几乎相同。
它是如何工作的?
The forEach
方法接受一个闭包。封盖上有此签名。
(Self.Generator.Element) throws -> Void
当您使用forEach
它与你签订了一份“合同”。
- 您提供给
forEach
在输入中接受单个参数的闭包,其中参数具有与数组相同的类型
- The
forEach
将该闭包应用于数组的每个元素。
Example
nums.forEach { (n) in
print(n)
}
然而在 Swift 中,你可以省略闭包参数的显式名称。在闭包内部,您可以使用以下参数引用该参数$0
对于第一个参数,$1
第二个,依此类推。
所以前面的代码片段也可以写成如下
nums.forEach {
print($0)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)