【问题标题】:Swift can a switch case statement have multiple arguments?Swift 的 switch case 语句可以有多个参数吗?
【发布时间】:2017-06-27 22:35:16
【问题描述】:

如果我在枚举中设置了我的案例,我可以在 switch 语句中调用多个案例吗?又名case .a, .b: return true

enum myLetters {
  case a
  case b
  case c

    var myCondition: Bool {
      switch self {
      case .a, .b: return true
      case .c: return false
      default: return false
    }
  }
}

【问题讨论】:

  • 您的代码编译并运行良好(尽管default 的情况是多余的)——您的问题到底是什么?
  • 为什么默认是多余的? myLetters 不需要默认大小写吗?
  • 这是多余的,因为您的枚举只有三个可能的值。由于switch 语句涵盖了这三个值,因此使用default 毫无意义。永远都达不到。

标签: swift enums switch-statement


【解决方案1】:

是的,看看 Swift 在switch 声明上的documentation

为了达到你想要的,你需要检查myLetters的当前值:

var myCondition: Bool {
    switch self {
    case .a, .b: return true
    case .c: return false
    }
}

【讨论】:

    【解决方案2】:

    如果您想对具有相同关联值的案例进行分组,您可以执行以下操作:

    var myCondition: Bool {
      switch self {
      case .a(let value), .b(let value): return value
      case .c(let value1, let value2): // do stuff with value1 and value 2
      }
    }
    

    很遗憾,您目前无法将 let 语句组合成一个语句。

    【讨论】:

    • 非常感谢@danielhadar ... 正在寻找如何使用这些值切换案例,而 let 关键字救了我的命。再次感谢老兄!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 2015-01-23
    • 2011-08-15
    相关资源
    最近更新 更多