刚刚学习 Swiftguard关键字,我想知道它会实现什么优势。
例如,假设我有以下代码:
func getEmail(email: String?) -> String {
guard email != "" else {
return ""
}
return email! + "@somewhere.com"
}
print(getEmail(email: "test123"))
Run Code Online (Sandbox Code Playgroud)
我可以写...
if email == "" {
return ""
}
return email! + "@somewhere.com"
Run Code Online (Sandbox Code Playgroud)
……也是。
那么拥有guard-keyword 有什么好处呢?
它只是有(一点点)语法糖吗?
我不认为这是使用守卫的一个很好的例子,更常见的是将它与可能为 nil(又名可选)的变量或可能返回 nil 的函数一起使用。我建议你阅读Swift Programming Language书中的 guard 语句(只需向下滚动一点到“提前退出”)
我们可以从您缺乏验证的代码中制作一个更好的示例
func getEmail(email: String?) -> String? {
guard let input = email, !input.isEmpty else {
return nil
}
return input + "@somewhere.com"
}
Run Code Online (Sandbox Code Playgroud)
这里我们使用 guardemail通过将其分配给局部变量来检查该参数是否为 nil input。如果它是 nil,函数将返回 nil,否则它将检查它是否为空,然后它也将返回。
如果没问题,该函数将继续并创建并返回一个电子邮件地址。请注意,该函数被声明为返回一个可选字符串,因为我认为如果像这样的函数在失败时返回 nil 而不是空字符串会更清晰。