我在SwiftUI教程中获得以下代码,如何理解这一行?我知道目的是将座椅颜色设置为重点颜色(蓝色)(如果已选择),否则将其保留为默认灰色。
但是如何理解这种语法以及它在Swift中被称为什么术语呢?
.foregroundColor(isSelectable ? isSelected ? accentColor : Color.gray.opacity(0.5) : accentColor)
struct ChairView: View {
var width: CGFloat = 50
var accentColor: Color = .blue
var seat = Seat.default
@State var isSelected = false
var isSelectable = true
var onSelect: ((Seat)->()) = {_ in }
var onDeselect: ((Seat)->()) = {_ in }
var body: some View {
VStack(spacing: 2) {
Rectangle()
.frame(width: self.width, height: self.width * 2/3)
.foregroundColor(isSelectable ? isSelected ? accentColor : Color.gray.opacity(0.5) : accentColor)
.cornerRadius(width / 5)
Rectangle()
.frame(width: width - 10, height: width / 5)
.foregroundColor(isSelectable ? isSelected ? accentColor : Color.gray.opacity(0.5) : accentColor)
.cornerRadius(width / 5)
}
}
}
struct ChairView_Previews: PreviewProvider {
static var previews: some View {
ChairView()
}
}
是嵌套的ternary operator。
对swift不太熟悉,所以我不知道我的代码片段是否与Swift完全一致,但是对于您的示例,我们称其为psudeocode:
if(a) {
if(b) {
c
} else {
d
}
} else {
c
}