【发布时间】:2021-04-26 06:05:23
【问题描述】:
上下文:我正在关注https://developer.apple.com/tutorials/swiftui/ 上的教程来了解 Swift 和 iOS。
在学习 Swift 中的闭包表示法时,我想编写我遇到的闭包的扩展版本。
ForEach(filteredLandmarks) {
landmark in
NavigationLink(destination: LandmarkDetail(landmark: landmark)) {
LandmarkRow(landmark: landmark)
}
}
第一个代码 sn-p 效果很好。
根据我对尾随闭包的理解,ForEach 结构的最后一个参数所需的函数类型暗示了闭包定义的函数的类型,因此我们不需要明确说明闭包定义的函数的类型,并且仅隐式引用它的唯一参数landmark。但是如果我想显式定义它的类型是什么?
以下是我的尝试,它在 Xcode 中产生错误
协议类型'View'的值不能符合'View';只有结构/枚举/类类型可以符合协议
ForEach(filteredLandmarks) {
(landmark: Landmark) -> View in
NavigationLink(destination: LandmarkDetail(landmark: landmark)) {
LandmarkRow(landmark: landmark)
}
}
我知道landmark 的类型是Landmark,因为删除-> View 效果很好。所以真的,我只需要知道返回类型是什么?
【问题讨论】: