我想根据某个表达式将一个 bool 值赋给一个变量。这是我的代码
方法一:
if jobListView.tableView.jobIds.count > 0 {
container.isHidden = false
} else {
container.isHidden = true
}
方法二:
container.isHidden = jobListView.tableView.jobIds.count <= 0
我知道第二个更具可读性,但它对执行速度有什么影响吗。
最佳答案
I understand that the second one is more readable
这是一个很好的论点。从您(或您的团队)更熟悉的版本开始。
will it make any difference in execution speed?
如上所述 - 分析您的应用并了解性能 瓶颈。然后你可以决定这个特定的部分是否需要 有待改进。
在这种特殊情况下它根本不会产生影响, 编译器足够聪明,可以优化这两种变体。 这是一个简化的独立示例:两者
var hidden = false
func foo(n: Int) {
if n > 0 {
hidden = false
} else {
hidden = true
}
}
和
var hidden = false
func foo(n: Int) {
hidden = n <= 0
}
生成相同的汇编代码
.private_extern __T04main3fooySi1n_tF
.globl __T04main3fooySi1n_tF
.p2align 4, 0x90
__T04main3fooySi1n_tF:
pushq %rbp
movq %rsp, %rbp
testq %rdi, %rdi
setle __T04main6hiddenSbvp(%rip)
popq %rbp
retq
你可以验证
swiftc -O -emit-assembly main.swift
关于Swift - 编写 if else 的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50481427/