美文网首页
OC中有guard吗??

OC中有guard吗??

作者: 红色海_ | 来源:发表于2020-01-07 20:55 被阅读0次

先来看看 Swift 的 guard 关键字

guard 是 Swift 中特有的一个关键字,用于处理一些条件不成立时进行函数打断的操作。 (卫语句)

比如说用户输入的用户名长度为 0 时返回,使用常规的条件判断语句会是这样:

func fun1(userName: String) {
    if userName.count > 0 {
    // 写你要处理的逻辑
    }
}

这样会导致业务逻辑代码被嵌套在判断的括号内,可能导致更深的缩进嵌套,进一步的可以对逻辑进行反方向的优化,即当条件不满足时打断函数的执行:

func fun2(userName: String) {

    if userName.count == 0 { return }

    // 写你要处理的逻辑
}

Swift 语言的 guard 关键字就是为此而生的并且在语义上也更好理解,看

func fun3(userName: String {

    guard userName.count > 0 else { 
       // 这里是 不满足条件
       return 
    }

    // 这里是 满足条件
    // 写你要处理的逻辑
}

保证了代码的可读性。

那么OC中使用怎么使用guard呢??

可惜OC中没有 guard 关键字, 但理解了swift 的guard作用机制后再利用C的宏特性实现它也不难。。。

#define oc_guard(__wish__) if (__wish__);


- (void)fun fun:(NSString *)userName {

    oc_guard(userName.length) else { return; }

    // 写你要处理的逻辑
}

相关文章

网友评论

      本文标题:OC中有guard吗??

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