在遵循有关SwiftUI的Apple教程时,我发现了这一点:
1| var landmarkIndex: Int {
2| userData.landmarks.firstIndex(where: { $0.id == landmark.id })!
3| }
在第2行教程中的解释不够好,他们只说: “访问或更新地标的收藏夹状态时,将使用地标索引,以便始终访问该数据的正确版本。”
通过写“ $ 0.id == landmark.id”,我无法理解什么是firstIndex和正在访问的内容 我为什么要创建这个变量?
非常感谢您- 尼科
答案 0 :(得分:0)
如果要冗长地写这篇文章,它将看起来像这样:
var landmarks: [LandMark] = []
for l in userData.landmarks {
if isLandMarkEqual(l, landmark) {
landmarks.append(l)
}
}
func isLandMarkEqual(_ landmarkOne: LandMark, _ landmarkTwo: LandMark) -> Bool {
return landmarkOne.id == landmarkTwo.id
}
我们正在遍历userData.landmarks并在每个元素上调用一个函数(用{}表示)。然后,我们获得满足该功能(也称为闭包)中列出的条件的元素的首次出现的索引。
如果我们仅返回true,例如
userData.landmarks.firstIndex(where: { true })!
然后每个元素的条件都成立,因此我们将只获得集合中的第一个索引,也就是0。
$ 0是函数/闭包中第一个参数的简写形式。在我们的示例中,这等效于landmarkOne。