为什么SwiftyJSON为其常量创建隐式解包的可选项?

时间:2015-06-13 02:48:53

标签: swift forced-unwrapping

SwiftlyJSON's code中,它使用强制解包来定义以下常量:

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

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

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

1 个答案:

答案 0 :(得分:0)

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

  1. 通过指责提交,我们可以看到 2014年10月6日所做的更改,而且我们知道Swift刚刚发布,可能会有一些编译器警告或错误:
  2. enter image description here

    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>