迅捷!类型上的运算符

时间:2019-05-22 08:00:01

标签: swift types

我认为这是一百万次被问到的问题,但是使用Google搜索来解释逻辑就可以了!运算符。

我遇到了以下两个代码示例:

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

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

AND:

class B: A {

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

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

示例本身并没有真正的相关性,它们都在讨论不同的主题,但是在两种情况下,语法都是“!”

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

谢谢,阿维。

1 个答案:

答案 0 :(得分:1)

在第一种情况下,它使您在代码中的其他地方使用closure时无需使用?,因为Xcode假定它不会为nil,与连接时相同从情节提要到代码的一些UI元素可以节省已经用!包裹的出口