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”访问的内容
我为什么要创建这个变量?
非常感谢 -
妮可
如果你要写得冗长,它会看起来像这样:
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.
在遵循有关 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”访问的内容 我为什么要创建这个变量?
非常感谢 - 妮可
如果你要写得冗长,它会看起来像这样:
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.