使用guard关键字

时间:2016-07-20 23:51:50

标签: swift

我遇到过很多编码器使用了guard关键字的情况。然后,在看似几乎完全相同的情况下,同一代码中的同一个编码器不使用guard关键字。我知道这可能是一个愚蠢的问题,所以请不要抨击它。我什么时候应该使用guard关键字,不应该在哪里?

这是一个例子(还有更多)。这是从API请求数据的脚本的一部分。

operator<

为什么不使用:

bool operator<(const Person& p) const {
    return age < p.age;
}
一直是

语法而不是保护语法?乍一看,它甚至似乎有更多的功能,但我确信不一定是这种情况。

1 个答案:

答案 0 :(得分:3)

守卫声明的一大好处是你知道如果不满足条件,那么执行流程就会停止。

这有几个原因很重要

解缠

您可以定义不需要新范围{ ... }的展开值

func next(num:Int?) -> Int? {
    guard let num = num else { return nil }
    return num + 1
}

可读性

当您阅读代码时,您知道如果不满足guard条件,则不会执行以下行。

语义

您知道guard语句用于检查以下代码块所需的条件。

但我可以用guard

替换每个if

不确定。我们还可以在某些语言中用while替换每个forgoto。我们总是可以用迭代替换递归(反之亦然)。 但这并不一定意味着它总是一个好主意。

尽管我们可以使用多个编程“工具”来实现某些行为,但我们仍然应该使用更适合该特定场景的行为。