美文网首页
indirect 间接 和 嵌套 enum

indirect 间接 和 嵌套 enum

作者: fordring2008 | 来源:发表于2017-02-04 10:17 被阅读10次

    class Node{   

     let value: T?   

     let next: Node?        

    init(value: T?, next: Node?) {        

    self.value = value        

    self.next = next   

     }

    }

    let list = Node(value: 1,                next: Node(value: 2,                          next: Node(value: 3,                                      next: Node(value: 4, next: nil))))

    // 单向链表  1 -> 2 -> 3 -> 4

    // 上面的单向列表,用 nil 表示空节点, 不容易理解,也不好维护

    // Swift2 中可以使用 嵌套 enum

     // 这里会提示嵌套 enum 需要加上  indirect 间接

    indirect enum LinkedList{    

    case empty    

    case node(Element, LinkedList)       

     // 链表节点的删除方法   

     func removing(_ element: Element) ->LinkedList{

    guard case let .node(value, next) = self else {

    return .empty

    }

    return value == element ? next : LinkedList.node(value, next.removing(element))

    }

    }

    // 单项链表

    let linkedList = LinkedList.node(1, .node(2, .node(3, .node(4, .empty))))

    let result = linkedList.removing(2)

    相关文章

      网友评论

          本文标题:indirect 间接 和 嵌套 enum

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