我知道guard语句可以这样使用
guard let someConstant = someOptional() else {
// ...
}我试着去做
struct MyStruct {
let aString: String
init?() {
guard aString = optionalString() else { return }
}
// ...但它似乎不起作用。
我假设let a = b和a = b在失败时会有一个布尔值为false,但是guard let和guard实际上是完全不同的吗?
发布于 2019-03-06 16:39:57
if语句中的可选绑定是这样工作的:它检查给定值是否有值,如果有,则将该值发送到if块
if let constant = optional {
constant
}在guard语句中使用可选绑定时,它会检查值是否存在,如果存在,则继续在当前作用域中使用此作用域中分配的变量/常量
guard let constant = optional else { ... }
constant因此,对于您的初始化器,您需要分配常量,因此您需要使用let关键字,并且由于您的初始化器是可选的,因此如果初始化失败,您需要返回nil
guard let aString = optionalString() else { return nil }
self.aString = aStringhttps://stackoverflow.com/questions/55018610
复制相似问题