Как реализовать swift Dictionary по собственной логике - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь реализовать фактическую реализацию словаря swift. Я хочу знать, как игнорировать переменную массива коробки в выходном коде. И это именно то, что фактическая реализация словаря?

struct Box<U,V> where U: Hashable {

    var que: U
    var ans:V

    fileprivate var boxes = [Box]()

    init(_ que: U,ans: V) {
        self.que = que
        self.ans = ans
    }

    mutating func addBox(with que: U, ans: V) {
        boxes.append(Box(que, ans: ans))
    }

    mutating func deleteBox(_ que: U) {
        for (index, value) in boxes.enumerated() {
            if value.que == que {
                boxes.remove(at: index)
            }
        }
    }
}

class Display {

    func show() {
        var dict = Box(1, ans: "One")
        print(dict)
    }
}

let obj = Display()
obj.show()

// Вывод: Box (que: 1, ans: "One", box: [] )

Ответы [ 2 ]

3 голосов
/ 05 февраля 2020

Я хочу знать, как игнорировать поля переменных массива в выходном коде

Соответствовать блоку CustomStringConvertible и предоставить собственную реализацию description.

Кроме того, это именно то, что фактическая реализация словаря?

Нет.

1 голос
/ 05 февраля 2020

Чтобы правильно отобразить ваш объект, используйте протокол CustomStringConvertible, как сказал Мэтт в другом посте.

Для фактической реализации Dictionary в Swift вы можете найти его в репозитории GitHub с открытым исходным кодом, управляемом Apple здесь (спойлер: это немного сложнее, чем то, что вы написали).

...