मेरे पास इस तरह का एक शब्दकोश है:

static var answer = [String: String]()

मैं वस्तुओं की संख्या को किसी विशिष्ट संख्या तक कैसे सीमित कर सकता हूं?

1
Sorena H A 7 अक्टूबर 2018, 21:33

1 उत्तर

सबसे बढ़िया उत्तर

यह एक आसान तरीका है:

var answer = [String: String]()
let limit = 3

func addToDictionary(key: String, value: String) {
    let keys = answer.keys
    if keys.count < limit || keys.contains(key) {
        answer[key] = value
    }
}

addToDictionary(key: "uno", value: "one")
addToDictionary(key: "dos", value: "two")
addToDictionary(key: "tres", value: "three")
addToDictionary(key: "quatro", value: "four")
addToDictionary(key: "tres", value: "trois")

print(answer) //["uno": "one", "tres": "trois", "dos": "two"]

यह answer["cinco"] = "five" के माध्यम से सीधे शब्दकोश में जोड़ने से नहीं रोकेगा। एक ऐसी संरचना बनाने का उचित तरीका होगा जिसमें सीमा संपत्ति हो। यहां एक उदाहरण कार्यान्वयन है:

struct LimitedDictionary<T: Hashable, U> {
    private let limit: UInt
    private var dictionary = [T: U]()

    init(limit: UInt) {
        self.limit = limit
    }

    subscript(key: T) -> U? {
        get {
            return dictionary[key]
        }
        set {
            let keys = dictionary.keys
            if keys.count < limit || keys.contains(key) {
                dictionary[key] = newValue
            }
        }
    }

    func getDictionary() -> [T: U] {
        return dictionary
    }
}

उपयोग

var dict = LimitedDictionary<String, String>(limit: 3)

dict["uno"] = "one"
dict["dos"] = "two"
dict["tres"] = "three"
dict["quatro"] = "four"
dict["tres"] = "trois"

dict["uno"]          //"one"
dict.getDictionary() //["dos": "two", "tres": "trois", "uno": "one"]
1
ielyamani 7 अक्टूबर 2018, 22:33