如何在功能之外使用守卫?
How to use guard outside of function?
是否可以在函数外使用 guard
?
下面会抛出一个错误,需要使用 return 或 break 但这在这种情况下是不可能的。
var var1 = String?()
guard let validVar = var1 else {
print("not nil")
}
不,这不可能。要使用 class 中其他变量的知识来实例化变量,您可以使用惰性初始化或 getter.
var testString : String?
lazy var testString2 : String = {
guard let t = self.testString else { return String()}
return t
}()
如果我错了,请随时纠正我:)
我认为 guard 是为了函数的健壮性而设计的,如果条件错误,它会中断函数。所以如果你真的需要这个变量,它必须满足条件。就像 if let 但更干净 :)
From your example: var testString = String?() is invalid. Instantiate an String will never be nil so no optional is requiert.
编辑:
我在我的操场上写了一个例子。
import UIKit
var var1 : String?
var validVar : String = {
guard let validVar = var1 else {
print("not nil")
return "NIL"
}
return validVar
}()
print("\(validVar)")
是否可以在函数外使用 guard
?
下面会抛出一个错误,需要使用 return 或 break 但这在这种情况下是不可能的。
var var1 = String?()
guard let validVar = var1 else {
print("not nil")
}
不,这不可能。要使用 class 中其他变量的知识来实例化变量,您可以使用惰性初始化或 getter.
var testString : String?
lazy var testString2 : String = {
guard let t = self.testString else { return String()}
return t
}()
如果我错了,请随时纠正我:)
我认为 guard 是为了函数的健壮性而设计的,如果条件错误,它会中断函数。所以如果你真的需要这个变量,它必须满足条件。就像 if let 但更干净 :)
From your example: var testString = String?() is invalid. Instantiate an String will never be nil so no optional is requiert.
编辑: 我在我的操场上写了一个例子。
import UIKit
var var1 : String?
var validVar : String = {
guard let validVar = var1 else {
print("not nil")
return "NIL"
}
return validVar
}()
print("\(validVar)")