作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
enum Tree{
case Leaf(String)
case Node(Tree)
} //compiler not happy!!
enum Tree{
case Leaf(String)
case Node([Tree])
} //compiler is happy in (arguably) a more complex recursive scenario?
Swift 编译器如何适用于第二种(更复杂的)场景而不是第一种?
最佳答案
值得注意的是 Swift 2 beta 2 和进一步具有用于递归枚举的 indirect
关键字 - 这意味着
enum Tree<T> {
case Leaf(T)
indirect case Node(Tree)
}
是有效的语言结构,不会破坏 Swift 2 中的模式匹配。
决定的 TL;DR:“[…] 我们认为正确的解决方案是简单地不支持通过枚举的一般的、不明显的递归,并要求程序员用间接的方式显式调解。”
关于swift - Swift 中递归枚举的奇怪行为(Beta 7),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25653541/
我是一名优秀的程序员,十分优秀!