swift - मैं कॉपी-ऑन-लिखित शब्दों के साथ एक कंटेनर कैसे बना सकता हूं?(स्विफ्ट)




optimization struct (2)

यहाँ थोड़ा आसान उदाहरण है

struct COWExample1<T> {
    private var box = Box<[T]>(value: [T]())
    var count: Int {
        return box.value.count
    }
    mutating func append(e: T) {
        ensureBoxUniqueRefed()
        box.value.append(e)
    }
    private mutating func ensureBoxUniqueRefed() {
        if isUniquelyReferencedNonObjC(&box) == false {
            box = box.duplicated()
        }
    }
}

private final class Box<T> {
    var value: T
    init(value: T) {
        self.value = value
    }
    func duplicated() -> Box<T> {
        return Box(value: value)
    }
}

मेरे पास बहुत बड़ी संरचना है, जो मुझे यह सुनिश्चित करना है कि बेकार की नकल नहीं की गई है मैं इसके लिए एक कॉपी-ऑन-लिखित कंटेनर कैसे बना सकता हूं?


पिछले उत्तर गलत नहीं हैं, लेकिन एक बहुत आसान तरीका है स्विफ्ट टीम में प्रदर्शन युक्तियों की सूची है , और वे कहते हैं:

कॉपी-ऑन-लिखित को लागू करने का सबसे आसान तरीका मौजूदा कॉपी-ऑन-लेखन डेटा स्ट्रक्चर्स, जैसे अर्रे, को लिखना है।

यह उस से ज्यादा आसान नहीं है!








copy-on-write