我想根据某个表达式为变量赋一个布尔值。这是我的代码
方法1:
if jobListView.tableView.jobIds.count > 0 {
container.isHidden = false
} else {
container.isHidden = true
}
方法2:
container.isHidden = jobListView.tableView.jobIds.count <= 0
据我所知,第二个更具可读性,但它的执行速度会有所不同。
答案 0 :(得分:6)
我理解第二个更具可读性
这是一个很好的论据。从您(或您的团队)更熟悉的版本开始。
会不会对执行速度产生任何影响?
如上所述 - 介绍您的应用并查找效果 瓶颈。然后您可以决定这个特定部分是否需要 有待改进。
在这个特殊情况下它根本不会产生任何影响, 编译器足够聪明,可以优化两种变体。 这是一个简化的自包含示例:两者
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