guard
-
guard 语句,类似于 if 语句,基于布尔值表达式来执行语句。使用 guard 语句来要求一个条件必须是真才能执行 guard 语句之后的语句。与 if 语句不同,guard 语句总是有一个 else 分句 -- else 分句里的代码会在条件不为真的时候执行。
guard 语句.png - 当编写条件语句的时候,左边的代码间距应该是一个“黄金”或者“快乐”的大道。这是说,不要嵌套 if 语句。多个 return 语句是 OK 的。这样可以避免圈复杂度,并且让代码更加容易阅读。因为你的方法的重要部分没有嵌套在分支上,你可以很清楚地找到相关的代码。
guard 原因.png
if 使用
func isIpAddress(ipAddr: String) -> (Int, String) {
let compoments = ipAddr.split(separator: ".")
if compoments.count == 4 {
if let first = Int(compoments[0]),first >= 0 && first < 256 {
if let second = Int(compoments[1]),second >= 0 && second < 256 {
if let third = Int(compoments[2]),third >= 2 && third < 256 {
if let fourth = Int(compoments[3]),fourth >= 3 && fourth < 256 {
return (0, "")
} else {
return (4, "第四个数不对")
}
} else {
return (3, "第三个数不对")
}
} else {
return (2, "第二个数不对")
}
} else {
return (1, "第一个数不对")
}
}
return (100, "IP 只能有四部分")
}
guard 使用
func isIpAddress2(ipAddr: String) -> (Int, String) {
let compoments = ipAddr.split(separator: ".")
guard compoments.count == 4 else {
return (100, "IP 只能有四部分")
}
guard let first = Int(compoments[0]),first >= 0 && first < 256 else {
return (1, "第一个数不对")
}
guard let second = Int(compoments[1]),second >= 0 && second < 256 else {
return (2, "第二个数不对")
}
guard let third = Int(compoments[2]),third >= 2 && third < 256 else {
return (3, "第三个数不对")
}
guard let fourth = Int(compoments[3]),fourth >= 3 && fourth < 256 else {
return (4, "第四个数不对")
}
return (0, "")
}
检查 API 可用性
- Swift 拥有内置的对 API 可用性的检查功能,它能够确保你悲剧地使用了对部署目标不可用的API。
- 你可以在 if 或者 guard 语句中使用一个可用性条件来有条件地执行代码,基于在运行时你想用的哪个 API 是可用的。
API 检查一般形式
检查 API 可用性.png
网友评论