【问题标题】:Swift enum recursive associated valueSwift枚举递归关联值
【发布时间】:2014-06-19 15:18:13
【问题描述】:

我正在尝试使用 Swift 中的枚举创建一个数学表达式。 该枚举可以是一个常量,具有一个 ComplexNumber 类型的关联值(一个简单的结构)。它也可以是具有递归关联值的平方根表达式。 例如,我希望能够将 sqrt(sqrt(1+2i)) 存储在枚举中。

enum Expression {
    case Sqrt(Expression)
    case Constant(ComplexNumber)
}

Xcode (6 beta 2) 立即崩溃。有什么问题? 根据我在 Swift 指南中读到的有关关联值的内容,这应该可行。

【问题讨论】:

  • 它还没有实现。这就是我得到的:error: unimplemented IR generation feature recursive enum layout
  • Xcode 不应崩溃。但我怀疑递归枚举是不可能的。枚举是值类型,具有关联值的枚举类似于 C 联合。我假设它们必须具有在编译时已知的大小。
  • 只是好奇你为什么是 Sqrt() 表达式枚举类型本身?
  • @TheLazyChap 我认为他们想创建一个公式解释器或类似的东西,一个表达式是一个计算,而 sqrt 是一个计算本身。

标签: math recursion enums swift


【解决方案1】:

现在可以使用 Swift 2.0,从 beta 4 开始。 来自发行说明的示例:

 enum List<T> {
   case Nil
   indirect case Cons(head: T, tail: List<T>)
 }

 indirect enum Tree<T> {
   case Leaf(T)
   case Branch(left: Tree<T>, right: Tree<T>)
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多