在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中使用,因为我认为没有理由。
答案 0 :(得分:0)
好吧,也许我错了,当然更好的方法是询问代码的作者。但无论如何,这是我的建议:
实际上,通过编写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>