【发布时间】:2021-08-11 03:48:34
【问题描述】:
我正在学习 Landmarks SwiftUI 教程 https://developer.apple.com/tutorials/swiftui/handling-user-input。我对在
中使用逻辑运算符感到困惑landmarks.filter { landmark in
(!showFavoritesOnly || landmark.isFavorite)
}
我试图了解此逻辑在返回过滤后的地标时的工作原理。我很确定!运算符反转 showFavoritesOnly 操作数和 || landmark.isFavorite 上的运算符使声明为真,如果任何一方在闭包中为真,但由于某种原因,就返回的内容而言,目前应该发生的事情让我无法理解。如果有人能澄清我将非常感激。
这是上下文文件:
import SwiftUI
struct LandmarkList: View {
@State private var showFavoritesOnly = false
var filteredLandmarks: [Landmark] {
landmarks.filter { landmark in
(!showFavoritesOnly || landmark.isFavorite)
}
}
var body: some View {
NavigationView {
List(filteredLandmarks)
{ landmark in
NavigationLink(destination: LandmarkDetail(landmark: landmark)) {
LandmarkRow(landmark: landmark)
}
}
.navigationTitle("Landmarks")
}
}
}
struct LandmarkList_Previews: PreviewProvider {
static var previews: some View {
LandmarkList()
}
}
【问题讨论】: