swift - SwiftUI 中的 firstIndex 是什么 - Swift
问题描述
在关注有关 SwiftUI 的 Apple 教程时,我发现了这一点:
1| var landmarkIndex: Int {
2| userData.landmarks.firstIndex(where: { $0.id == landmark.id })!
3| }
教程中的第 2 行没有很好地解释,他们只说:“在访问或更新地标的收藏状态时,您将使用 landmarkIndex,以便您始终访问该数据的正确版本。”
我无法理解什么是 firstIndex 以及我通过编写“$0.id == landmark.id”访问的内容 为什么我要创建这个 var?
非常感谢 - 尼科
解决方案
如果你要详细地写这个,它看起来像这样:
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。
推荐阅读
- vb.net - VB BMI 计算器,计算所有用户的平均体重
- python-3.x - 如何在不更改 css 的情况下共享 pytest-html 的 html 报告
- ios - 错误:二元运算符“-=”不能应用于“Int?”类型的操作数 和“诠释”
- firebase - 将来自 Firebase 和 Google 分析的数据合并到 1 个视图中
- fiware - 可与 Fiware 集成的可视化工具
- sql - SQLSTATE [42601]:语法错误:7 错误:子查询必须只返回一列使用函数
- kotlin - 如何在 Kotlin 中禁用字符串插值?
- python-3.x - 当两个 OrderedDict 中的键相同时,如何添加两个 OrderedDict?
- r - 将数据框保存在 Shiny 中以便以后访问并下载?
- git - 我可以为 git add --patch 添加自己的选项吗?