gpt4 book ai didi

Swift 可选模式

转载 作者:搜寻专家 更新时间:2023-10-30 22:00:19 26 4
gpt4 key购买 nike

Swift 可选模式允许您像这样使用 case let:

var arrayOfOptional: [Int?] = [1, 2, nil, 4]

for case let number? in arrayOfOptional {
print("\(number)")
}

令我困惑的是 let number? 语法。在可选绑定(bind)中,未包装的版本没有 ?,但以防万一,它有。您如何解释这个结构,让您明白数字是展开的?

在功能上,以下两者之间有什么区别:

if let x = someOptional {
print(x)
}

对比

if case let x? = someOptional {
print(x)
}

最佳答案

我刚刚测试了您的第一个代码,之前从未用于模式匹配,但这是我的假设:

var arrayOfOptional: [Int?] = [1, 2, nil, 4]

for case let number in arrayOfOptional {
print("\(number)")
}
// will return 3 optional ints and a nil

for case let number? in arrayOfOptional {
print("\(number)")
}
// will return only any values that could be unwrapped

我假设这是一种模式,它在引擎盖下解包任何可选值,并且只有在它可以解包并且愿意时才继续。

if case let x? = someOptional {
print(x)
}

case let 用于模式匹配,如 switch x { case let ... }。在您的示例中,它还将尝试解包一个可选值。如果它是 nil 它将失败

关于Swift 可选模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31453826/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com