美文网首页
guard与if

guard与if

作者: sydie | 来源:发表于2017-03-14 13:01 被阅读34次

事例:

  • 假设有身份证并且成年的就可以上网。
    1.用if进行判断
func surf(age: Int, hasCard: Bool)
{
    if age>=18 {
        if hasCard {
            print("老板,给我充两个小时")
        }else{
            print("没带身份证,回家拿去")
        }
    }else{
        print("没成年,回家吃奶去")
    }   
}
  • 调用函数
surf(age: 17, hasCard: false)
surf(age: 29, hasCard: true)
surf(age: 20, hasCard: false)
  • 打印结果
没成年,回家吃奶去
老板,给我充两个小时
没带身份证,回家拿去

2.用guard进行判断

func guardCard(age: Int,hasCard: Bool)
{
    guard age >= 18 else {
        print("没成年,回家吃奶去")
        return
    }
    
    guard hasCard else {
        print("没带身份证,回家拿去")
        return
    }
    
    print("老板,给我充两个小时")
}
  • 调用函数
guardCard(age: 17, hasCard: false)
guardCard(age: 29, hasCard: true)
guardCard(age: 20, hasCard: false)
  • 打印结果
没成年,回家吃奶去
老板,给我充两个小时
没带身份证,回家拿去

3.guard let 和 if let的使用
在可选项进行解包时,有三种常用方式。

  • 名称! 强行解包 如果为常量,值为nil,强行解包运行会奔溃。如果为变量,值为nil,强行解包值为空
  • 名称 ?? value 简单三目运算,如果有值就直接赋值,如果没值就用后面value替换
  • guard let 或者 if let
var test: Int? = 9
if let result = test
{
    print(result)
}
func demo(test : Int?) {
    
    guard let result1 = test else{
      // 如果没值
        return
    }
    // 如果有值
    print(result1)
    
}

4.总结
guard有守卫的意思,就如防护门一样,一道道防护,第一道门走不通的时候就被拦截在外了。所以guard的判断是:

如果条件满足,继续往下走,
如果条件不满足,走else分支。

guard不支持直接在外使用,if可以直接使用。

  • 例如


    写在函数方法外.png
报错内容.png

报错:必须要有return或者break。所以guard不能直接写。

相关文章

  • 解决vmware 启动失败:Credential Guard或D

    原因 出现此问题是因为Device Guard或Credential Guard与Workstation不兼容。 ...

  • guard与if

    事例: 假设有身份证并且成年的就可以上网。1.用if进行判断 调用函数 打印结果 2.用guard进行判断 调用函...

  • swift 语法糖

    if let 与 guard 语法糖 话说if let 和 guard 只是语法糖,没有也可以,但有了可以使得代码...

  • Guard关键字

    没有guard 有guard

  • guard let / if let

    guard let的意思与if let都是针对于可选类型进行解包,使用guard let可以是代码更加清晰易读 使...

  • Swift基础-逻辑语句

    一. Guard 与if语句相同的是,guard也是基于一个表达式的布尔值去判断一段代码是否该被执行。与if语句不...

  • rails开发辅助工具

    一、Guard:自动刷新网页,检查改动 https://github.com/guard/guard 1. 安装:...

  • Swift guard let/var && if let/v

    guard 的含义,与if 的区别 guard 和 if 语句有些类似,根据其后的表达式的BOOL值决定下一步执行...

  • guard 与 if 的区别

    guard 语句 解包之后b的作用域仍然有效var a: String? = "lcm"guard let b =...

  • guard 和 if 的用法及区别

    一、guard是什么? guard是 swift 2.0推出的新的判断语句的用法。guard语句和if语句类似,都...

网友评论

      本文标题:guard与if

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