Try   HackMD

問:為什麼何廷芳還可以出來?(3分)

https://ent.ltn.com.tw/news/paper/421760

class 元配 {
    var name: String
    var 陰影: 婚姻?
    
    init(name: String) {
        self.name = name
    }
    
    func 譙(小三: 第三者) {
        print("\(name) 告 \(小三.name)")
        print("\(name): 終於出了口氣")
        小三.被譙()
    }
    
    func 願意離婚(婚姻: 婚姻, 離婚條件: Bool) -> Bool {
        
        if 離婚條件 {
            print("和\(name)離婚")
            陰影 = 婚姻
            return true
        } else {
            print("和\(name)離不了婚")
            譙(小三: 婚姻.小三!)
            return false
        }
        
    }
}

class 第三者: 元配 {
    func 被譙() {
        print("\(name)處境可憐")
    }
}

class 婚姻 {
    var 老婆: 元配 {
        didSet {
            print("和\(老婆.name)結婚")
        }
    }
    var 小三: 第三者? = nil {
        didSet {
            guard let 小三 = 小三 else {
                return
            }
            print("\(小三.name)介入")
        }
    }

    init(老婆: 元配) {
        self.老婆 = 老婆
    }
    
    func add(小三: 第三者) {
        self.小三 = 小三
    }
    
    func 談判(離婚條件: Bool) throws -> Bool {
        if 老婆.願意離婚(婚姻: self, 離婚條件: 離婚條件) {
            老婆 = 小三!
            小三 = nil
            return true
        } else {
            throw NSError(domain: "婦女團體撻伐", code: 9453, userInfo: ["無恥": "true", "不厚道": true])
        }
    }
}

var 高國華婚姻 = 婚姻(老婆: 元配(name: "何廷芳"))
let 小三 = 第三者(name: "蔡郁璇")
高國華婚姻.add(小三: 小三)
try! 高國華婚姻.談判(離婚條件: true)

let 小三的小三 = 第三者(name: "陳子璇")
高國華婚姻.add(小三: 小三的小三)
try! 高國華婚姻.談判(離婚條件: false)