SwiftUI 中的 firstIndex 是什么 - Swift

What is firstIndex in SwiftUI - Swift

在遵循有关 SwiftUI 的 Apple 教程时,我发现了这一点:

1| var landmarkIndex: Int {
2|    userData.landmarks.firstIndex(where: { [=12=].id == landmark.id })!
3| }

教程里面第2行解释得不是很好,只说: "You’ll use landmarkIndex when accessing or updating the landmark’s favorite status, so that you’re always accessing the correct version of that data."

我无法理解什么是 firstIndex 以及我通过编写“$0.id == landmark.id”访问的内容 我为什么要创建这个变量?

非常感谢 - 妮可

Apple tutorial about SwiftUI

如果你要写得冗长,它会看起来像这样:

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 并在每个元素上调用一个函数(由 {} 表示)。然后我们得到满足函数中规定的条件的元素第一次出现的索引(也称为闭包)。

如果我们简单地 return true 例如

userData.landmarks.firstIndex(where: { true })!

那么每个元素的条件都为真,因此我们只会得到集合中的第一个索引,也就是 0。

$0 只是 function/closure 中第一个参数的 shorthand。在我们的示例中,这相当于 landmarkOne.