Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该总是用Swift中的三元替换if…then…else吗?_Swift_Ternary Operator - Fatal编程技术网

我应该总是用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)*此编译器错误-运行时性能差异不存在。