美文网首页
Swift中enum的使用2

Swift中enum的使用2

作者: 盖小聂 | 来源:发表于2019-06-28 18:38 被阅读0次

indirect和嵌套enum

  • 在enum的定义中嵌套自身对于class这样的引用类型来说没有任何问题,但是对于像struct或enum这样的值类型来说,普通的做法是不可行的。我们需要在定义前面加上indirect来提示编译器不要在值类型中直接嵌套。
  • 通过嵌套enum来定义链表结构
indirect enum LinkedList<Element: Comparable> {
    case Empty
    case Node(Element, LinkedList<Element>)
    
    func linkedListRemovingElement(element: Element) -> LinkedList<Element> {
        guard case let .Node(value,next) = self else {
            return .Empty
        }
        return value == element ? next : LinkedList.Node(value, next.linkedListRemovingElement(element: element))
    }
}
class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let linkedList = LinkedList.Node(1, .Node(2, .Node(3, .Node(4, .Empty))))
        let resultList = linkedList.linkedListRemovingElement(element: 2)
        print(resultList)

    }
}

相关文章

网友评论

      本文标题:Swift中enum的使用2

      本文链接:https://www.haomeiwen.com/subject/dxgecctx.html