Swift. Словари. Базовые свойства и методы
From AsIsWiki
(Difference between revisions)
(Created page with "<div style='max-width:700px;text-align:justify;'> Назад · [[Swift|Оглавле...") |
|||
Line 41: | Line 41: | ||
Array(values) // ["США", "Россия", "Великобритания"] | Array(values) // ["США", "Россия", "Великобритания"] | ||
</pre> | </pre> | ||
+ | |||
+ | ==Вложенные типы данных== | ||
+ | <pre> | ||
+ | Dictionary<T1,T2>.Keys | ||
+ | |||
+ | Dictionary<T1,T2>.Values | ||
+ | </pre> | ||
+ | |||
+ | Типы данных Keys и Values пишутся через точку после типа словаря.<br> | ||
+ | Они реализованы внутри типа Dictionary<T1,T2> и не могут быть использованы вне его контекста: | ||
+ | <pre> | ||
+ | var a: Values // параметр такого типа создать нельзя, | ||
+ | // Values существует только в контексте словаря | ||
+ | </pre> | ||
+ | |||
+ | Значения типов Keys и Values не представляют интереса отдельно от родительского словаря.<br> | ||
+ | В контексте словаря, данные типы возвращаются в виде обобщенной коллекции,<br> | ||
+ | поскольку заранее неизвестно, в каком виде (Set или Array) они необходимы разработчику. | ||
==Пример== | ==Пример== |
Revision as of 14:40, 20 March 2022
Назад · Оглавление · Дальше
Contents |
Количество элементов словаря
var a = [1:"one", 2:"two", 3:"three"] a.count // 3
Определение пустого словаря
var a: [Int:String] = [:] a.count // 0 a.isEmpty // true
Получение всех ключей или значений
var dic = ["RU":"Россия", "GB":"Великобритания", "US":"США"] let keys = dic.keys // Dictionary.Keys(["RU", "US", "GB"]) let values = dic.values // Dictionary.Values(["Россия", "США", "Великобритания"]) type(of: keys) // Dictionary<String, String>.Keys.Type type(of: values) // Dictionary<String, String>.Values.Type
Указанные типы соответствуют протоколу Collection,
и используются для доступа к ключам или значениям исходного словаря:
Set(keys) // {"GB", "US", "RU"} Array(keys) // ["RU", "US", "GB"] Set(values) // {"Россия", "Великобритания", "США"} Array(values) // ["США", "Россия", "Великобритания"]
Вложенные типы данных
Dictionary<T1,T2>.Keys Dictionary<T1,T2>.Values
Типы данных Keys и Values пишутся через точку после типа словаря.
Они реализованы внутри типа Dictionary<T1,T2> и не могут быть использованы вне его контекста:
var a: Values // параметр такого типа создать нельзя, // Values существует только в контексте словаря
Значения типов Keys и Values не представляют интереса отдельно от родительского словаря.
В контексте словаря, данные типы возвращаются в виде обобщенной коллекции,
поскольку заранее неизвестно, в каком виде (Set или Array) они необходимы разработчику.
Пример
Проверка наличия фигуры на шахматной доске:
typealias Chessman = [String: (alpha:Character, num:Int)?] var Chessmans: Chessman = [ "Пешка": ("A", 2), "Ферзь": ("D", 1), "Ладья": nil, ] var name = "Пешка1" if let position = Chessmans[name] { // проверяем наличие key if let pos = position { // проверяем position на nil print("\(name) \(pos.alpha)\(pos.num)") } else { print("Фигура взята.") } } else { print("Фигуры в словаре нет.") }
Назад · Оглавление · Дальше