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},您可以使用
。它看起来很难看,但如果不是在函数中,这是什么上下文?类定义?操场?你说代码是无效的,但它肯定没有错误。那么什么是无效的呢?好的,无效的我可能是错误的词,但是可选的是不需要的,因为它初始化并且不会失败。