我遇到过很多编码器使用了guard关键字的情况。然后,在看似几乎完全相同的情况下,同一代码中的同一个编码器不使用guard关键字。我知道这可能是一个愚蠢的问题,所以请不要抨击它。我什么时候应该使用guard关键字,不应该在哪里?
这是一个例子(还有更多)。这是从API请求数据的脚本的一部分。
operator<
为什么不使用:
bool operator<(const Person& p) const {
return age < p.age;
}
一直是语法而不是保护语法?乍一看,它甚至似乎有更多的功能,但我确信不一定是这种情况。
答案 0 :(得分:3)
守卫声明的一大好处是你知道如果不满足条件,那么执行流程就会停止。
这有几个原因很重要
您可以定义不需要新范围{ ... }
的展开值
func next(num:Int?) -> Int? {
guard let num = num else { return nil }
return num + 1
}
当您阅读代码时,您知道如果不满足guard
条件,则不会执行以下行。
您知道guard
语句用于检查以下代码块所需的条件。
guard
if
不确定。我们还可以在某些语言中用while
替换每个for
和goto
。我们总是可以用迭代替换递归(反之亦然)。
但这并不一定意味着它总是一个好主意。
尽管我们可以使用多个编程“工具”来实现某些行为,但我们仍然应该使用更适合该特定场景的行为。