如何在功能之外使用防护?

4th*_*ace 6 swift2 guard-statement

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

以下引发了一个需要使用返回或中断的错误,但在这种情况下是不可能的.

var var1 = String?()
guard let validVar = var1 else {
    print("not nil")
}
Run Code Online (Sandbox Code Playgroud)

Bjö*_* Ro 5

不可能.要使用类中其他变量的知识来实例化变量,可以使用延迟初始化或getter.

var testString : String?
lazy var testString2 : String = {
     guard let t = self.testString else { return String()}
      return t
}()
Run Code Online (Sandbox Code Playgroud)

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

保护是为了我认为的功能的稳健性,并且如果条件错误将在功能中休息.所以,如果你真的需要这个变量,它必须满足条件.就像一个如果让但更干净:)

从您的示例:var testString = String?()无效.实例化String永远不会为nil,因此不需要任何可选项.

编辑: 我在我的Playground中写了一个例子.

import UIKit

var var1 : String?

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

print("\(validVar)")
Run Code Online (Sandbox Code Playgroud)