Swift - 写一个if else的最好方法

时间:2018-05-23 06:40:27

标签: swift if-statement

我想根据某个表达式为变量赋一个布尔值。这是我的代码

方法1:

    if jobListView.tableView.jobIds.count > 0 {
        container.isHidden = false
    } else {
        container.isHidden = true
    }

方法2:

    container.isHidden = jobListView.tableView.jobIds.count <= 0

据我所知,第二个更具可读性,但它的执行速度会有所不同。

1 个答案:

答案 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