首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Swift中guard语句中的多个条件

Swift中guard语句中的多个条件
EN

Stack Overflow用户
提问于 2016-08-29 12:46:00
回答 2查看 45.3K关注 0票数 58

有没有办法在Swift的guard语句中包含多个条件?

例如,如果我想使用guard检查两个可选值为零,我应该如何使用单个guard语句来实现?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-29 13:47:25

检查此代码

代码语言:javascript
复制
func demo(){

    var str = [String: String]()

    str["status"] = "blue"
    str["asd"] = nil

    guard let var2 = str["asd"], let var1 = str["status"]
    else
    {
        print("asdsfddffgdfgdfga")
        return
    }
    print("asdasdasd")
}

守卫将逐一检查情况。如果第一个为真,那么它将检查下一个。否则,它将执行

否则

部分。

票数 89
EN

Stack Overflow用户

发布于 2019-01-31 07:59:44

为了回答Prabhav的问题,是的,你是正确的,在一个

守卫

语句必须为true才能继续(即,不进入else块)。从这个意义上说,它确实像是用AND逻辑分隔条件。

可以

实现OR逻辑,不是使用逗号,而是使用布尔条件:

代码语言:javascript
复制
guard
    true || false    // this guard statement evaluates to true
else
    {
    print("no, not all values in the guard were true")
    return
    }

print("yes, all of the values in the guard were true")  // this is printed

或or与and逻辑的组合,通过使用布尔条件和可选绑定的组合:

代码语言:javascript
复制
let testString: String? = nil

guard
    true || false,
    let x = testString,    // this guard statement evaluates to false
    true
else
    {
    print("no, not all values in the guard were true")  // this is printed
    return
    }

print("yes, all of the values in the guard were true")

这篇来自Apple的摘要,是关于可选绑定的

如果

语句同样适用于

守卫

声明:

您可以根据需要在单个if语句中包含任意多个可选绑定和布尔条件,用逗号分隔。如果可选绑定中的任意值为nil或任何布尔条件的计算结果为false,则整个If语句的条件都被视为false。以下if语句是等效的:

代码语言:javascript
复制
if let firstNumber = Int("4"), let secondNumber = Int("42"),
    firstNumber < secondNumber && secondNumber < 100
    {
    print("\(firstNumber) < \(secondNumber) < 100")
    } // Prints "4 < 42 < 100"

if let firstNumber = Int("4")
    {
    if let secondNumber = Int("42")
        {
        if firstNumber < secondNumber && secondNumber < 100
            {
            print("\(firstNumber) < \(secondNumber) < 100")
            }
        }
    } // Prints "4 < 42 < 100"
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39198626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档