是否可以在函数外部使用guard

以下引发了一个错误,该错误需要使用return或break,但是在这种情况下是不可能的。

var var1 = String?()
guard let validVar = var1 else {
    print("not nil")
}

最佳答案

没有不可能。要在类中了解其他变量的情况下实例化变量,可以使用惰性初始化或getter。

var testString : String?
lazy var testString2 : String = {
     guard let t = self.testString else { return String()}
      return t
}()

如果我错了,请随时纠正我:)

我认为函数的健壮性是为了提供保护,如果条件不正确,则会破坏函数。因此,如果您确实需要此变量,则必须满足条件。像一个如果让但更干净的:)



编辑:
我在操场上写了一个例子。
import UIKit

var var1 : String?

var validVar : String = {
    guard let validVar = var1 else {
        print("not nil")
        return "NIL"
    }
    return validVar
}()

print("\(validVar)")

10-07 19:04
查看更多