文書  >   Swift   >   Swift 標準ライブラリ   >   Collections   >   KeyValuePairs


汎用構造体


KeyValuePairs


キー値のペアの軽量コレクション。





宣言


@frozen struct KeyValuePairs<Key, Value>


概要


キー値ペアの順序付けられたコレクションが必要で、Dictionary 型が提供する高速なキーのルックアップを必要としない場合は、KeyValuePairs インスタンスを使用します。真の辞書のキー値のペアとは異なり、KeyValuePairs インスタンスのキーも値も Hashable プロトコルに準拠する必要はありません。


Swift 辞書リテラルを使用して KeyValuePairs インスタンスを初期化して下さい。元の辞書リテラルの順序を維持することに加えて、KeyValuePairs は重複キーも許可します。 例えば:


let recordTimes: KeyValuePairs = ["Florence Griffith-Joyner": 10.49,
                                      				"Evelyn Ashford": 10.76,
								"Evelyn Ashford": 10.79,
                                      				"Marlies Gohr": 10.81]
print(recordTimes.first!)
// Prints "("Florence Griffith-Joyner", 10.49)"


KeyValuePairs を使用すると、辞書で効率的な一部の操作が遅くなります。特に、キーに一致する値を見つけるには、コレクションのすべての要素を検索する必要があります。以下の例の firstIndex(where:) の呼び出しは、コレクション全体を走査して、断定 (predicate) に一致する要素を見つける必要があります。


let runner = "Marlies Gohr"
if let index = recordTimes.firstIndex(where: { $0.0 == runner }) {
    let time = recordTimes[index].1
    print("\(runner) set a 100m record of \(time) seconds.")
} else {
    print("\(runner) couldn't be found in the records.")
}
// Prints "Marlies Gohr set a 100m record of 10.81 seconds."


関数パラメータとしてのキー値ペア


KeyValuePairs パラメータを使用して関数を呼び出す場合、Swift 辞書リテラルを、Dictionary を作成せずに渡すことができます。この機能は、リテラル内の要素の順序が重要な場合に特に重要になります。


たとえば、2 つの整数のタプルのリストを保持する IntPairs 構造体を作成し、KeyValuePairs インスタンスを受け入れるイニシャライザを使用できます。


struct IntPairs {
    var elements: [(Int, Int)]

    init(_ elements: KeyValuePairs<Int, Int>) {
        self.elements = Array(elements)
    }
}


新しい IntPairs インスタンスを作成する準備ができたら、辞書リテラルを IntPairs イニシャライザへのパラメータとして使用します。KeyValuePairs インスタンスは、渡された要素の順序を保持します。


let pairs = IntPairs([1: 2, 1: 1, 3: 4, 2: 1])
print(pairs.elements)
// Prints "[(1, 2), (1, 1), (3, 4), (2, 1)]"


トピックス





型エイリアス





イニシャライザ





インスタンスプロパティ





インスタンスメソッド





サブスクリプト


subscript<R>(R) -> Slice<KeyValuePairs<Key, Value>>


範囲式で指定されたコレクションの要素の連続した部分範囲にアクセスします。


subscript((UnboundedRange_) -> ()) -> Slice<KeyValuePairs<Key, Value>>


subscript(Range<Int>) -> Slice<KeyValuePairs<Key, Value>>


コレクションの要素の連続した部分範囲にアクセスします。


subscript(KeyValuePairs<Key, Value>.Index) -> KeyValuePairs<Key, Value>.Element


指定された位置にある要素にアクセスします。



関連





以下に準拠



以下も見よ





特殊用途のコレクション

















トップへ(Swift 標準ライブラリ)












トップへ(Swift 標準ライブラリ)












トップへ(Swift 標準ライブラリ)












トップへ(Swift 標準ライブラリ)












トップへ(Swift 標準ライブラリ)












トップへ(Swift 標準ライブラリ)
目次
Xcode 11 の新機能

  • 言語:Swift
  • SDK
  • Xcode 9.0+
  • フレームワーク
  • Swift 標準ライブラリ
  • 宣言
  • 概要
  • トピックス
  • 関連
  • 以下も見よ












  • トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)