Swift 3关联值枚举比较语法与OR(`||`)

时间:2017-05-03 11:28:35

标签: swift enums swift3

我有一个带有关联值的枚举ChatItemType

enum ChatItemType {
  case message(ChatBubbleType)
  case log
  case timestamp
}

我在if语句中做这样的比较:

if case .log = givenType {
  return true
} else if case .timestamp = givenType {
  return true
} else {
  return false
}

将第一个和第二个语句组合起来显然是有意义的,因为它们都返回true。但是使用||我希望它的使用方式似乎给我一个语法错误:

if case .log = givenType || case .timestamp = givenType

我知道我只能检查.message类型,否则返回true,但将来可能会添加更多ChatItemType,所以我'我还想知道如何正确地结合比较。

我发现很难在网上找到答案主要是因为我不确定引用这些概念的正确术语。那里也有任何指导意见。

1 个答案:

答案 0 :(得分:7)

您无法与if语句中的多个模式进行比较 (据我所知),但您可以在switch声明中这样做:

switch givenType {
case .log, .timestamp:
    return true
case .message: 
    return false
}

(明确列举所有案例而不是使用默认案例 确保您不会忘记更新该功能 案例稍后会添加到该类型中。)