【问题标题】:Switch switch vs ternary operatorSwitch 开关 vs 三元运算符
【发布时间】:2018-10-02 15:24:54
【问题描述】:

在下面的示例代码中:为什么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
    }
}

【问题讨论】:

  • 应该是.heads 吗?只是观察
  • 我的意思是在: 错误评估之后。三元表达式也需要布尔表达式
  • 确实应该。

标签: swift conditional-operator


【解决方案1】:

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

var flip2: Coin {
    return self == .heads ? .tails : .heads
}

【讨论】:

    猜你喜欢
    • 2010-12-12
    • 2014-01-16
    • 2020-01-25
    • 1970-01-01
    • 2018-08-07
    • 1970-01-01
    • 2016-06-01
    • 1970-01-01
    • 2016-07-19
    相关资源
    最近更新 更多