我正在研究 Landmarks SwiftUI 教程https://developer.apple.com/tutorials/swiftui/handling-user-input。我对逻辑运算符的使用感到困惑
landmarks.filter { landmark in
(!showFavoritesOnly || landmark.isFavorite)
}
Run Code Online (Sandbox Code Playgroud)
我试图理解这个逻辑如何返回过滤的地标。我很确定!运算符反转showFavoritesOnly操作数和 || 如果闭包中任一方为真,则地标.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() …Run Code Online (Sandbox Code Playgroud)