【发布时间】:2015-08-04 07:52:49
【问题描述】:
我通过阅读 Apple 的书快速编程语言来学习 swift,我有一些关于 递归枚举 的问题。 (我看过这本书,但不太明白)。
示例代码:
enum ArithmeticExpression {
case Number(Int)
indirect case Addition(ArithmeticExpression, ArithmeticExpression)
indirect case Multiplication(ArithmeticExpression, ArithmeticExpression)
}
据说可以改成:
indirect enum ArithmeticExpression {
case Number(Int)
case Addition(ArithmeticExpression, ArithmeticExpression)
case Multiplication(ArithmeticExpression, ArithmeticExpression)
}
我有三个问题:
第一季度。 indirect 关键字的原因和用途是什么?
第二季度。如果把indirect放在enum前面,是不是表示firstcase之后的所有case都是firstcase的递归case?
第三季度。在实践中,上面的示例代码和下面的示例代码(没有indirect关键字)有什么不同:
enum ArithmeticExpression {
case Number(Int)
case Addition(ArithmeticExpression, ArithmeticExpression)
case Multiplication(ArithmeticExpression, ArithmeticExpression)
}
【问题讨论】:
-
如果我没记错的话,Chris Lattner 正在解释这个 WWDC 演讲中的间接关键字:developer.apple.com/videos/wwdc/2015/?id=106。 (但他的解释不是最好的。)