如果我可以用三元替换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
编辑:不是在寻找他们喜欢的人们的意见,而是是否有一种公认的专业实践来取代......如果可能的话......或者如果可能的话,用其他方式替代。
答案 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。