如何在Swift中理解此语法(a?b?c:d:c)

问题描述 投票:0回答:1

我在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()
    }
}
swiftui optional
1个回答
0
投票

是嵌套的ternary operator

对swift不太熟悉,所以我不知道我的代码片段是否与Swift完全一致,但是对于您的示例,我们称其为psudeocode:

if(a) {
    if(b) {
        c
    } else {
        d
    }
} else {
    c
}
© www.soinside.com 2019 - 2024. All rights reserved.