Swift2 如何使用功能外的防护装置?
是否可以在功能之外使用Swift2 如何使用功能外的防护装置?,swift2,guard-statement,Swift2,Guard Statement,是否可以在功能之外使用防护装置 下面抛出一个错误,需要使用return或break,但在本例中不可能使用 var var1 = String?() guard let validVar = var1 else { print("not nil") } 不,这是不可能的。要使用类中其他变量的知识实例化变量,可以使用惰性初始化或getter var testString : String? lazy var testString2 : String = { guard let t
防护装置
下面抛出一个错误,需要使用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
}()
如果我错了,请随时纠正我:)
我认为guard是为函数的健壮性而设计的,如果条件错误,它会中断函数。所以如果你真的需要这个变量,它必须满足条件。就像一个if-let但更干净:)
根据您的示例:var testString=String?()无效。实例化字符串永远不会为零,因此不需要任何可选项
编辑:
我在操场上写了一个例子
import UIKit
var var1 : String?
var validVar : String = {
guard let validVar = var1 else {
print("not nil")
return "NIL"
}
return validVar
}()
print("\(validVar)")
我还没有找到这样做的方法,但是如果让validVarTwo=var1{validVar=validVarTwo},您可以使用
。它看起来很难看,但如果不是在函数中,这是什么上下文?类定义?操场?你说代码是无效的,但它肯定没有错误。那么什么是无效的呢?好的,无效的我可能是错误的词,但是可选的是不需要的,因为它初始化并且不会失败。