加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift学习日志—— if let 与 guard 语法糖

发布时间:2020-12-14 06:56:07 所属栏目:百科 来源:网络整理
导读:工作比较忙,加上swift3.0也快出来了,听说核心代码又改变了(妈蛋,又得改代码了),swift的学习放了好久,有些都快忘了,赶紧复习下。 好,进入正题。 话说if let 和 guard 只是语法糖,没有也可以,但有了可以使得代码更简洁方便。要理解 if let 和 guard

工作比较忙,加上swift3.0也快出来了,听说核心代码又改变了(妈蛋,又得改代码了),swift的学习放了好久,有些都快忘了,赶紧复习下。

好,进入正题。

话说if let 和 guard 只是语法糖,没有也可以,但有了可以使得代码更简洁方便。要理解 if let 和 guard,不妨设想假如没有这两者,代码会怎么写。

------------------------------------

if let
func doSomething(str: String?)
{
    let v: String! = str
    if v != nil
    {
        // use v to do something
    }
}

Swift 中因为有optional,经常需要判断是否为空。假如没有if let,大致写成上面的样子,有了if let,可以改写成

func doSomething(str: String?)
{
    if let v = str
    {
        // use v to do something
    }
}

上面两段代码的控制流是一样的。对照着,可以看出if let的写法更加简洁方便。

------------------------------------

guard

假如if中出现的代码很长,我们写代码时可以将错误情况先返回。比如:

func doSomething(str: String?)
{
    let v: String! = str
    if v == nil
    {
        return
    }

    // use v to do something
}

这样做可以避免过多的嵌套。上面代码实在太常见了,swift也提供一个guard这个语法糖,用guard可以改写成:

func doSomething(str: String?)
{
    guard let v = str else { return }

    // use v to do something
}

上面两段代码的控制流是一样的。也可以看出guard的写法更加简洁方便。

------------------------------------


至于if let 和 guard 语法中出现的where,只是附加一些条件。相当于逻辑运算 && 和 ||。SQL中的条件语法也是用where这个关键字。


假如还不理解,动手将一段代码,不用if let 和 guard 进行改写。试多几次,就会发觉很自然了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读