【问题标题】:Swift: 'if' statement with a equals to b or c [duplicate]Swift:'if'语句,a等于b或c [重复]
【发布时间】:2018-08-03 13:03:46
【问题描述】:

如果我想确保 Swift 中的变量 A 等于 B 或 C,我通常会这样写:

if a == b || a == c {
   //Do Something
}

但是,我想知道在 Swift 中是否有此语句的简写版本以简化如下:

if a == (b || c) {
   //Do Something
}

在 Swift 中有这样的东西吗?

【问题讨论】:

  • 可能是[b, c].contains(a)?
  • let a = 1 let b = 1 let c = 1 if a == b,a==c { print("它们都相等") }else { print("不相等" ) }
  • @AnkitKushwah 不是 OP 所要求的。如果其中一个等于 a,OP 不想这样做
  • @LeoDabus 不,我不认为还有其他方法
  • 赞成,因为这是固执己见。在我的世界中 - 自 1976 年以来的 Fortran 和 COBOL 74 以来的 IT - 为什么要 if a == b || a == c? (是的,再一次,固执己见。)它应该编译成基本相同的东西(大小,构建,等等)。然而,您如何更好地表达“A”不是“B”或“C”?当然,Swift 是一种 fantastic 语言——又是我的“观点”——但仍然如此吗?无论语言或年龄如何,就意味着对每个人都意味着相同的东西?我投票支持你所拥有的。这是我们清楚地理解并且可以轻松翻译成任何语言的东西。

标签: swift


【解决方案1】:

一种可能性是开关盒:

let a = 1
let b = 2
let c = 1

switch a {
case b, c:
    print("it was equal to one of them")
default: break
}

当只有两个测试(等于 b 或 c)时,这似乎很笨拙,因为您可以像在第一个示例中那样写出来。但它在您有多个测试(案例)的情况下非常有用,每个测试(案例)都包含多个相等比较。

【讨论】:

  • 刚刚发表了一条评论——我希望——其他人来自纯 Swift 以外的其他地方。虽然这并不能真正回答总共三个变量 (A != B & C),但它很有趣。你认为它比四个或更多变量的代码更“富有表现力”吗?(希望尊重地问。再次马特,我在阅读你的答案之前发表了我的评论。)
  • @dfd 我对“富有表现力”没有意见,我认为这个概念不适合 Stack Overflow。现代语言试图将我们从容易出错的重复 andor 比较中拯救出来。一个 Swift 数组有多个 orcontainsindex,以及多个 allSatisfyand,这些都是 Swifty 方式。我的回答提供了我在某些情况下使用的or 的替代方案(我在回答中进行了描述)。
猜你喜欢
  • 2015-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多