Swift. Словари. Базовые свойства и методы
From AsIsWiki
(Difference between revisions)
(Created page with "<div style='max-width:700px;text-align:justify;'> Назад · [[Swift|Оглавле...") |
|||
(3 intermediate revisions by one user not shown) | |||
Line 1: | Line 1: | ||
<div style='max-width:700px;text-align:justify;'> | <div style='max-width:700px;text-align:justify;'> | ||
− | [[Swift. Словари. | + | [[Swift. Словари. Взаимодействие с элементами|Назад]] · |
[[Swift|Оглавление]] · | [[Swift|Оглавление]] · | ||
− | [[Swift. | + | [[Swift. Строки. Character в составе String|Дальше]] |
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) они необходимы разработчику. | ||
==Пример== | ==Пример== | ||
Line 71: | Line 89: | ||
---- | ---- | ||
− | [[Swift. Словари. | + | [[Swift. Словари. Взаимодействие с элементами|Назад]] · |
[[Swift|Оглавление]] · | [[Swift|Оглавление]] · | ||
− | [[Swift. | + | [[Swift. Строки. Character в составе String|Дальше]] |
</div> | </div> |
Latest revision as of 07:23, 22 March 2022
Назад · Оглавление · Дальше
Contents |
[edit] Количество элементов словаря
var a = [1:"one", 2:"two", 3:"three"] a.count // 3
[edit] Определение пустого словаря
var a: [Int:String] = [:] a.count // 0 a.isEmpty // true
[edit] Получение всех ключей или значений
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) // ["США", "Россия", "Великобритания"]
[edit] Вложенные типы данных
Dictionary<T1,T2>.Keys Dictionary<T1,T2>.Values
Типы данных Keys и Values пишутся через точку после типа словаря.
Они реализованы внутри типа Dictionary<T1,T2> и не могут быть использованы вне его контекста:
var a: Values // параметр такого типа создать нельзя, // Values существует только в контексте словаря
Значения типов Keys и Values не представляют интереса отдельно от родительского словаря.
В контексте словаря, данные типы возвращаются в виде обобщенной коллекции,
поскольку заранее неизвестно, в каком виде (Set или Array) они необходимы разработчику.
[edit] Пример
Проверка наличия фигуры на шахматной доске:
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("Фигуры в словаре нет.") }
Назад · Оглавление · Дальше