我是否应该总是替换......然后......在Swift中使用三元组?

时间:2016-05-19 22:56:03

标签: swift ternary-operator

如果我可以用三元替换if...then...else,我应该这样做吗?或者它归结为两者中哪一个最容易阅读和清晰?

E.g。改变:

If condition {
  doSomething
} else {
  doSomethingElse
}

condition ? doSomething : doSomethingElse

变量赋值如何:

If condition {
  myProperty += 1
} else {
  myProperty -= 1
}

为:

myProperty = condition ? myProperty + 1 : myProperty - 1

编辑:不是在寻找他们喜欢的人们的意见,而是是否有一种公认的专业实践来取代......如果可能的话......或者如果可能的话,用其他方式替代。

2 个答案:

答案 0 :(得分:4)

由于两者都有效且性能没有差异,因此目标是可读性。

使用三元条件进行简单的内联决策。

对于任何内联或比基本算法更复杂的内容,使用普通条件语句可能更具可读性

Apple在Swift 2.2文档中有一个很好的例子

Swift 2.2 Apple文档中的示例:

let contentHeight = 40
let hasHeader = true
let rowHeight = contentHeight + (hasHeader ? 50 : 20)
// rowHeight is equal to 90

我会说上面的内容与下面一样可读,而且更清晰。

let contentHeight = 40
let hasHeader = true
let rowHeight: Int
if hasHeader {
    rowHeight = contentHeight + 50
} else {
    rowHeight = contentHeight + 20
}
// rowHeight is equal to 90

答案 1 :(得分:1)

没有。三元运算符只应用于选择两个表达式之一的值。如果你的论点是“名词”,可以认为它是合适的。例如:

let wheels = isTricycle ? 3 : 2

在执行操作或具有更复杂参数的情况下,请使用传统的if语句。

Apple在iBook“The Swift Programming Language”中也说了很多,只提供了这些类型的三元运算符的例子,并特别说明:

  

“三元条件运算符提供了一种有效的简写,用于决定考虑两个表达式中的哪一个。但是,请谨慎使用三元条件运算符。如果过度使用,它的简洁性会导致难以阅读的代码。“

摘录自:Apple Inc.“The Swift Programming Language(Swift 2 Prerelease)。”iBooks。