Два быстрых твика для Array и Dictionary в Swift

Так как Swift очень безопасный язык, то конструкция обращения к массиву по индексу через  subscript меня всегда смущала. Я начал искать, и нашел у Erica Sadun запись, где она предлагает решение этого вопроса. Однако, это было давно, и свежая версия языка Swift 2.2 лучше работает со следующим вариантом.

extension Array {
    subscript (safe index: Int) -> Element? {
        return indices.contains(index) ? self[index] : nil
    }
}

с вызовом

let value = array[safe:index]

Зато совсем недавний пост Эрики для Dictionary, когда нам железно надо получить non-optional значение, мне тоже очень понравился! Поэтому оставлю и его здесь тоже.

public extension Dictionary {
    public subscript(key: Key, default fallback: Value) -> Value {
        return self[key] ?? fallback
    }
}

с вызовом

let value = dict[key, default: "?"]
Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s