切换开关与三元运算符

Vin*_*van 0 conditional-operator swift

在下面的示例代码中:为什么flip1编译但不是flip2

enum Coin {
   case heads
   case tails

    var flip1: Coin {
        switch self {
        case .heads: return .tails
        case .tails: return .heads
        }
    }

    var flip2: Coin {
        return self.heads ? .tails : .heads
    }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*n R 6

条件运算符将布尔表达式作为第一个操作数:

var flip2: Coin {
    return self == .heads ? .tails : .heads
}
Run Code Online (Sandbox Code Playgroud)