Protocol

ExpressibleByDictionaryLiteral

A type that can be initialized using a dictionary literal. ある辞書リテラルを使って初期化できる型。

Declaration 宣言

protocol ExpressibleByDictionaryLiteral

Overview 概要

A dictionary literal is a simple way of writing a list of key-value pairs. You write each key-value pair with a colon (:) separating the key and the value. The dictionary literal is made up of one or more key-value pairs, separated by commas and surrounded with square brackets. 辞書リテラルは、「キー値」ペアのリストを書く簡単な方法です。あなたは、各キー値ペアをコロン(:)で区切るキーと値で書きます。辞書リテラルは、コンマで区切られて角括弧で囲まれた1つ以上のキー値ペアで構成されます。

To declare a dictionary, assign a dictionary literal to a variable or constant: 辞書を宣言するには、辞書リテラルを変数または定数に割り当ててください。


let countryCodes = ["BR": "Brazil", "GH": "Ghana",
                    "JP": "Japan", "US": "United States"]
// 'countryCodes' has type [String: String]


print(countryCodes["BR"]!)
// Prints "Brazil"

When the context provides enough type information, you can use a special form of the dictionary literal, square brackets surrounding a single colon, to initialize an empty dictionary. 文脈が十分な型情報を提供する場合、あなたは特別な形式の辞書リテラル、ただ1つのコロンを囲んでいる角括弧、を使って空の辞書を初期化することができます。


var frequencies: [String: Int] = [:]
print(frequencies.count)
// Prints "0"

Conforming to the ExpressibleByDictionaryLiteral Protocol ExpressibleByDictionaryLiteralプロトコルに準拠する

To add the capability to be initialized with a dictionary literal to your own custom types, declare an init(dictionaryLiteral:) initializer. The following example shows the dictionary literal initializer for a hypothetical CountedSet type, which uses setlike semantics while keeping track of the count for duplicate elements: 辞書リテラルで初期化される能力をあなた独自のあつらえの型に加えるには、init(dictionaryLiteral:)イニシャライザを宣言してください。以下の例は、仮設的な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)
        }
    }
}

Topics 話題

Associated Types さまざまな関連型

Initializers イニシャライザ

Relationships 関係

Conforming Types これらの型が準拠

See Also 参照

Collection Literals コレクションリテラル