美文网首页
使用 guard 改善条件判断

使用 guard 改善条件判断

作者: 一个栗 | 来源:发表于2021-06-21 09:22 被阅读0次

    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

    相关文章

      网友评论

          本文标题:使用 guard 改善条件判断

          本文链接:https://www.haomeiwen.com/subject/whksyltx.html