如何在函数之外使用guard?

问题描述 投票:0回答:2

是否可以在函数之外使用

guard

下面会抛出一个错误,需要使用 return 或 break,但在这种情况下这是不可能的。

var var1 = String?()
guard let validVar = var1 else {
    print("not nil")
}
swift2 guard-statement
2个回答
5
投票

不,这是不可能的。要在了解类中其他变量的情况下实例化变量,可以使用延迟初始化或 getter。

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

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

我认为,guard 是为了函数的鲁棒性而设计的,如果条件错误,它将中断函数。所以如果你真的需要这个变量,它必须满足条件。就像 if let 但更干净:)

从您的示例来看: var testString = String?() 无效。实例化一个字符串永远不会为零,因此不需要任何可选值。

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

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

0
投票
使用

exit

guard someCondition else { print("Condition failed") exit(1) } print("Condition succeeded")
    
© www.soinside.com 2019 - 2024. All rights reserved.