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

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中使用它,因为我看不到任何理由。


可能是为什么创建“隐式解包可选项”?的重复问题。 - Shripada
不是重复问题 - 我在提问之前已经看过这篇文章了。我想知道为什么在SwiftyJSON中需要以这种方式声明常量。 - Boon
我投票将其关闭,因为这主要是基于个人意见的。尽管用户可能会添加关于在一般情况下应该或不应该这样做的评论,但您正在询问来自特定库的特定情况。除非SwiftyJSON的作者提供绝对可靠的答案,否则任何其他答案都只能是纯粹的推测。 - nhgrif
从别人的代码中学习是编程和学习的合法活动,询问为什么以某种方式完成某些事情的问题是有价值的。过度热衷于概括性地认为这类问题只能产生纯粹的猜测答案不仅是错误的(而且谁说猜测没有价值?),它还会阻止好问题被提出。我敦促您重新审视自己的信念以及它对SO社区造成的损害。 - Boon
1个回答

0

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

  1. 通过责备提交,我们可以看到更改是在2014年10月6日进行的,由于我们知道Swift刚刚发布,可能会出现一些编译器警告或错误:

enter image description here

  • 实际上,通过写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>
    

  • 感谢您的调查 - 您认为需要什么类型的编译器警告。 - Boon

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接