【问题标题】:Swift ! operator on types [duplicate]迅捷!类型上的运算符 [重复]
【发布时间】:2019-10-08 15:44:00
【问题描述】:

我认为这是一个被问过一百万次的问题,但谷歌搜索它会导致对逻辑的解释!运算符。

我遇到过这两个代码示例:

class RetainCycle {
    var closure: (() -> Void)! // THIS LINE
    var string = "Hello"

    init() {
        closure = {
            self.string = "Hello, World!"
        }
    }
}

与:

class B: A {

    convenience init(str : String) {
        self.init(num: Int(str)!) // THIS LINE
    }

    func haveFun() {
        print("Woo hoo!")
    }
}

这些例子本身并不相关,它们都在谈论不同的主题,但在这两种情况下都有“!”的语法

在第二个示例中,我很确定这意味着解开从 Int() 返回的值,因为我假设它返回一个可空值,但在第一个示例中它是什么意思?

谢谢,阿维。

【问题讨论】:

  • 只要您绝对、肯定地确保您的应用程序在设置选项之前不会尝试获取选项的值,就会使用隐式展开的选项。

标签: swift types


【解决方案1】:

在第一种情况下,当您在代码中的其他地方使用closure 时,您不需要使用?,因为 Xcode 假定它不会为 nil,当您连接一些 UI 元素时也是如此故事板编码它保存出口已经解开 ! 在最后

【讨论】:

  • 那么在这种情况下可以将闭包设置为 nil 吗?如果有人在它为零时尝试使用它会发生什么?抛出异常?
  • 它可以是nil,但是当你使用它时它会是nil应用程序会崩溃
猜你喜欢
  • 1970-01-01
  • 2015-11-30
  • 1970-01-01
  • 1970-01-01
  • 2018-04-12
  • 1970-01-01
  • 1970-01-01
  • 2016-10-24
  • 2018-06-01
相关资源
最近更新 更多