gpt4 book ai didi

swift - "guard let"和 "if let"是否与 "guard"和 "if"不同?

转载 作者:行者123 更新时间:2023-11-28 05:45:10 27 4
gpt4 key购买 nike

我知道可以像这样使用 guard 语句

guard let someConstant = someOptional() else {
// ...
}

我试着去做

struct MyStruct {
let aString: String
init?() {
guard aString = optionalString() else { return }
}
// ...

但是好像不行。

我假设 let a = ba = b 会以某种方式有一个 bool 值,当它失败时它是 false,但是 guard letguard居然完全不同?

最佳答案

if 语句中的可选绑定(bind)是这样工作的:它检查给定值是否有值,如果有,它会与该值一起进入 if block

if let constant = optional {
constant
}

guard 语句中使用可选绑定(bind),它检查值是否存在,如果存在,它继续在当前范围内分配变量/常量在此范围内

guard let constant = optional else { ... }
constant

因此,对于您的初始化程序,您需要分配常量,因此您需要使用 let 关键字,并且由于您的初始化程序是可选的,如果初始化失败,您需要返回 nil

guard let aString = optionalString() else { return nil }
self.aString = aString

关于swift - "guard let"和 "if let"是否与 "guard"和 "if"不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55018610/

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