文書   >   Swift 標準ライブラリ   >   Initialization with Literals   >   ExpressibleByDictionaryLiteral
プロトコル
ExpressibleByDictionaryLiteral
配列リテラルを使用して初期化できる型。
宣言
概要
辞書リテラルは、キー値ペアのリストを記述する簡単な方法です。キーと値を区切るコロン (:) で各キー値ペアを記述します。辞書リテラルは、カンマで区切られ、角括弧で囲まれた 1 つ以上のキー値ペアで構成されます。
辞書を宣言するには、変数または定数に辞書リテラルを代入します。
let countryCodes = ["BR": "Brazil", "GH": "Ghana", "JP": "Japan", "US": "United States"] // 'countryCodes' has type [String: String] print(countryCodes["BR"]!) // Prints "Brazil"
コンテキストが十分な型情報を提供する場合、特別な形式の辞書リテラル、単一のコロンを囲む角括弧を使用して、空の辞書を初期化できます。
var frequencies: [String: Int] = [:]
print(frequencies.count)
// Prints "0"
ExpressibleByDictionaryLiteral プロトコルへの準拠
辞書リテラルで初期化する機能を独自のカスタム型に追加するには、init(dictionaryLiteral:) イニシャライザを宣言します。以下の例は、重複する要素の数を追跡しながら set のような意味を使用する、仮想的な CountedSet 型の辞書リテラルイニシャライザを示しています。
struct CountedSet<Element: Hashable>: Collection, SetAlgebra {
// implementation details
/// Updates the count stored in the set for the given element,
/// adding the element if necessary.
///
/// - Parameter n: The new count for `element`. `n` must be greater
/// than or equal to zero.
/// - Parameter element: The element to set the new count on.
mutating func updateCount(_ n: Int, for element: Element)
}
extension CountedSet: ExpressibleByDictionaryLiteral {
init(dictionaryLiteral elements: (Element, Int)...) {
self.init()
for (element, count) in elements {
self.updateCount(count, for: element)
}
}
}
トピックス
関連型
辞書リテラルのキー型。
必須。
辞書リテラルの値型。
必須。
イニシャライザ
init(dictionaryLiteral: (Self.Key, Self.Value)...)
与えられたキー値ペアで初期化されたインスタンスを作成します。
必須。
関連
準拠する型
Dictionary
NSMutableDictionary
以下も見よ
コレクション・リテラル
protocol ExpressibleByArrayLiteral
配列リテラルを使用して初期化できる型。