4

SwiftlyJSON 的代码中,它使用强制展开定义了以下常量:

///Error code
public let ErrorUnsupportedType: Int! = 999
public let ErrorIndexOutOfBounds: Int! = 900
public let ErrorWrongType: Int! = 901
public let ErrorNotExist: Int! = 500

在这里将常量声明为隐式展开可选的目的是什么?

注意:我不是在问为什么或何时使用隐式展开,而是为什么在 SwiftyJSON 中使用它,因为我认为没有理由。

4

1 回答 1

0

好吧,也许我错了,当然更好的方法是询问代码的作者。但无论如何,这是我的建议:

  1. 通过归咎于提交,我们可以看到在2014 年 10 月 6 日所做的更改,并且我们知道 Swift 刚刚发布,可能会出现一些编译器警告或错误:

在此处输入图像描述

  1. 实际上,通过编写Int!而不是Int我们强制编译器生成ImplicitlyUnwrappedOptional<Int>类型(并且通过了解这一事实,我们可以返回到第 1 项):

    public let x: Int  = 1
    public let y: Int! = 2
    
    println(x.dynamicType)
    println(y.dynamicType)
    

    输出:

    Swift.Int
    Swift.ImplicitlyUnwrappedOptional<Swift.Int>
    
于 2015-07-16T13:00:44.063 回答