我应该总是用Swift中的三元替换if…then…else吗?
如果我可以用三元数替换我应该总是用Swift中的三元替换if…then…else吗?,swift,ternary-operator,Swift,Ternary Operator,如果我可以用三元数替换If…then…else,我应该这样做吗?还是归结到这两者中哪一个最容易阅读和清晰 例如,改变: If condition { doSomething } else { doSomethingElse } 到 如何使用变量赋值: If condition { myProperty += 1 } else { myProperty -= 1 } 致: 编辑:不寻找人们对他们喜欢的内容的意见,但是否有公认的专业惯例,在可能的情况下用三元运算符替换if…the
If…then…else
,我应该这样做吗?还是归结到这两者中哪一个最容易阅读和清晰
例如,改变:
If condition {
doSomething
} else {
doSomethingElse
}
到
如何使用变量赋值:
If condition {
myProperty += 1
} else {
myProperty -= 1
}
致:
编辑:不寻找人们对他们喜欢的内容的意见,但是否有公认的专业惯例,在可能的情况下用三元运算符替换if…then…else。否。三元运算符只能用于选择两个表达式之一的值。如果你的论点是“名词”,那就认为它是恰当的。例如:
let wheels = isTricycle ? 3 : 2
在执行操作或具有更复杂参数的情况下,请使用传统的if
语句
苹果在iBook“Swift编程语言”中也这么说,只提供了三元运算符的这些类型的示例,并特别指出:
“三元条件运算符”为判定两个表达式中的哪一个提供了一个有效的速记。但是,使用三元条件运算符小心,如果使用过多,它的简洁性会导致难以读取的代码。
摘自:苹果公司《Swift编程语言(Swift 2预发布)》,iBooks 否。三元运算符只能用于选择两个表达式之一的值。如果你的论点是“名词”,那就认为它是恰当的。例如:
let wheels = isTricycle ? 3 : 2
在执行操作或具有更复杂参数的情况下,请使用传统的if
语句
苹果在iBook“Swift编程语言”中也这么说,只提供了三元运算符的这些类型的示例,并特别指出:
“三元条件运算符”为判定两个表达式中的哪一个提供了一个有效的速记。但是,使用三元条件运算符小心,如果使用过多,它的简洁性会导致难以读取的代码。
摘自:苹果公司《Swift编程语言(Swift 2预发布)》,iBooks 因为两者都是有效的,而且性能没有差异,所以目标是可读性 使用三元条件进行简单的内联决策 对于任何不适合内联或比基本算术更复杂的内容,使用普通条件语句可能更具可读性 苹果在Swift 2.2文档中有一个很好的例子 来自Swift 2.2苹果文档的示例:
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
由于两者都是有效的,并且在性能上没有差异,所以目标是可读性 使用三元条件进行简单的内联决策 对于任何不适合内联或比基本算术更复杂的内容,使用普通条件语句可能更具可读性 苹果在Swift 2.2文档中有一个很好的例子 来自Swift 2.2苹果文档的示例:
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
你是在问什么是迅捷风格的终极法则,祝福它的名字,还是我们的想法?你已经知道答案了……就我个人而言,我会选择看起来最令人愉悦、最容易阅读的;我发现第二个示例中的三元版本有点笨拙,但我不确定专业应用程序程序员是否有一个“公认的标准”(我最常用的语言没有if..then..else.或关键字的三元格式,只是助记符)。我认为这是一个有效的问题。语言有惯用的风格,特别是在这种情况下,有一个非常明确的答案:不@LeoDabus感谢Leo——我在心里打了自己一巴掌,因为我没有想到这一点。你是在问迅捷风格的终极法则是什么,祝福它的名字,还是我们的想法?你已经知道答案了……就我个人而言,我会选择看起来最令人愉悦、最容易阅读的;我发现第二个示例中的三元版本有点笨拙,但我不确定专业应用程序程序员是否有一个“公认的标准”(我最常用的语言没有if..then..else.或关键字的三元格式,只是助记符)。我认为这是一个有效的问题。语言有惯用的风格,特别是在这种情况下,有一个非常明确的答案:不@LeoDabus感谢Leo——在精神上打了我一巴掌,因为我没有想到这一点。接受Nicholas的答案是因为他先得到答案。接受Nicholas的答案是因为他先得到答案。注意:三元运算符的编译时间比
if else
的编译时间高90%。(4s vs 4ms)*此编译器错误-运行时性能差异不存在。注意:三元运算符的编译时间比if-else
的编译时间高90%。(4s vs 4ms)*此编译器错误-运行时性能差异不存在。