Swift中的switch case语句是否可以有多个参数?

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
    }
  }
}

6
你的代码可以编译并正常运行(虽然default情况是多余的)- 你具体有什么问题? - Hamish
为什么默认值是多余的?我的 myLetters 不需要一个默认情况吗? - Kermit
这是多余的,因为你的枚举只有三个可能的值。由于switch语句涵盖了这三个值,使用default是没有意义的。它永远不会被执行到。 - rmaddy
2个回答

25

是的,请查看Swift的 switch语句 的文档。

为了实现您所需求的结果,您需要检查myLetters的当前值:

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

4
如果您想将带有相同关联值的案例分组,您可以执行以下操作:
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...我正想知道如何使用这些值进行case切换,let关键字救了我的命。再次感谢你朋友! - PhillipJacobs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接