文書  >   Swift   >   Swift 標準ライブラリ   >   Collections   >   KeyValuePairs
汎用構造体
KeyValuePairs
キー値のペアの軽量コレクション。
宣言
概要
キー値ペアの順序付けられたコレクションが必要で、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)]"
トピックス
型エイリアス
typealias KeyValuePairs.Element
KeyValuePairs の要素型:個々のキー値ペアを含むタプル。
コレクション内の位置を表す型。
typealias KeyValuePairs.Indices
コレクションのサブスクリプトに有効なインデックスを昇順で表す型。
typealias KeyValuePairs.Iterator
コレクションの反復インターフェースを提供し、その反復状態をカプセル化する型。
typealias KeyValuePairs.SubSequence
コレクションの要素の連続した部分範囲を表すシーケンス。
イニシャライザ
init(dictionaryLiteral: (Key, Value)...)
与えられた辞書リテラルから新しい KeyValuePairs インスタンスを作成します。
インスタンスプロパティ
コレクション内の要素の数。
デバッグに適した辞書の内容を表す文字列。
辞書の内容を表す文字列。
var endIndex: KeyValuePairs<Key, Value>.Index
コレクションの"最後を過ぎた" 位置、つまり、最後の有効なサブスクリプト引数よりも 1 つ大きい位置。
var first: (key: Key, value: Value)?
コレクションの最初の要素。
昇順でのコレクションのサブスクリプトに有効なインデックス。
コレクションが空かどうかを示すブール値。
var last: (key: Key, value: Value)?
コレクションの最後の要素。
var lazy: LazySequence<KeyValuePairs<Key, Value>>
このシーケンスと同じ要素を含むシークエンスだが、map や filter などの一部の操作が遅延して実装されます。
var startIndex: KeyValuePairs<Key, Value>.Index
空でないコレクション内の最初の要素の位置。
コレクション内の要素の数以下の値。
インスタンスメソッド
func allSatisfy(((key: Key, value: Value)) -> Bool) -> Bool
シーケンスのすべての要素が特定の述語 (predicate) を満たすかどうかを示すブール値を返します。
このシーケンスの各要素を使用して、与えられた変換を呼び出した nil でない結果を含む配列を返します。
func contains(where: ((key: Key, value: Value)) -> Bool) -> Bool
指定された述語 (predicate) を満たす要素がシーケンスに含まれているかどうかを示すブール値を返します。
与えられた述語 (predicate) を等価性テストとして使用して、与えられたコレクションからこのコレクションの順序付けされた要素を生成するために必要な違いを返します。
func distance(from: Int, to: Int) -> Int
2 つのインデックス間の距離を返します。
func drop(while: ((key: Key, value: Value)) -> Bool) -> Slice<KeyValuePairs<Key, Value>>
predicate が true を返し、残りの要素を返す間、要素をスキップしてサブシーケンスを返します。
func dropFirst(Int) -> Slice<KeyValuePairs<Key, Value>>
与えられた数の最初の要素を除く全てを含む部分シーケンスを返します。
func dropLast(Int) -> Slice<KeyValuePairs<Key, Value>>
与えられた数の最後の要素を除く全てを含む部分シーケンスを返します。
与えられた述語 (predicate) を同等性テストとして使用して、このシーケンスと別のシーケンスに同じ順序で同等の要素が含まれているかどうかを示すブール値を返します。
func enumerated() -> EnumeratedSequence<KeyValuePairs<Key, Value>>
ペアのシーケンス (n、x) を返します。ここで n はゼロで始まる連続した整数を表し、x はシーケンスの要素を表します。
func filter(((key: Key, value: Value)) -> Bool) -> [(key: Key, value: Value)]
与えられた述語 (predicate) を満たすシーケンスの要素を順番に含む配列を返します。
func first(where: ((key: Key, value: Value)) -> Bool) -> (key: Key, value: Value)?
与えられた述語 (predicate) を満たすシーケンスの最初の要素を返します。
func firstIndex(where: ((key: Key, value: Value)) -> Bool) -> Int?
コレクションの要素が与えられた述語 (predicate) を満たす最初のインデックスを返します。
このシーケンスの各要素で与えられた変換を呼び出した連結した結果を含む配列を返します。
  廃止  
func forEach(((key: Key, value: Value)) -> Void)
for-in ループと同じ順序で、シーケンス内の各要素で、与えられたクロージャを呼び出します。
func formIndex(inout Int, offsetBy: Int)
与えらたインデックスを指定された距離だけオフセットします。
func formIndex(inout Int, offsetBy: Int, limitedBy: Int) -> Bool
与えられたインデックスを指定された距離だけオフセットするか、与えられた制限インデックスと等しくなるようにします。
func formIndex(after: inout Int)
与えられたインデックスをその後継で置き換えます。
func formIndex(before: inout Int)
与えられたインデックスをその前身に置き換えます。
func index(Int, offsetBy: Int) -> Int
与えられたインデックスから指定された距離にあるインデックスを返します。
func index(Int, offsetBy: Int, limitedBy: Int) -> Int?
与えられた制限インデックスを距離が超えない限り、与えられたインデックスから指定された距離にあるインデックスを返します。
func index(after: Int) -> Int
与えられたインデックスの直後の位置を返します。
func index(before: Int) -> Int
与えられたインデックスの直後の位置を返します。
func index(where: ((key: Key, value: Value)) -> Bool) -> Int?
コレクションの要素が与えられた述語 (predicate) を満たす最初のインデックスを返します。
  廃止  
func last(where: ((key: Key, value: Value)) -> Bool) -> (key: Key, value: Value)?
与えられた述語 (predicate) を満たすシーケンスの最後の要素を返します。
func lastIndex(where: ((key: Key, value: Value)) -> Bool) -> Int?
与えられた述語に一致するコレクション内の最後の要素のインデックスを返します。
要素を比較するために与えられた述語 (predicate) を使用して、シーケンスが辞書の順序で別のシーケンスに先行するかどうかを示すブール値を返します。
func makeIterator() -> IndexingIterator<KeyValuePairs<Key, Value>>
コレクションの要素の反復因子を返します。
func map<T>(((key: Key, value: Value)) -> T) -> [T]
与えられたクロージャをシーケンスの要素にマッピングした結果を含む配列を返します。
与えられた述語 (predicate) を要素間の比較として使用して、シーケンス内の最大の要素を返します。
与えられた述語 (predicate) を要素間の比較として使用して、シーケンス内の最小の要素を返します。
func prefix(Int) -> Slice<KeyValuePairs<Key, Value>>
コレクションの初期要素を含む、指定された最大長までの部分シーケンスを返します。
func prefix(through: Int) -> Slice<KeyValuePairs<Key, Value>>
コレクションの始めから指定された位置までの部分シーケンスを返します。
func prefix(upTo: Int) -> Slice<KeyValuePairs<Key, Value>&Gt
コレクションの始めから、指定された位置までの、ただし、それを含まれない、部分シーケンスを返します。
predicate が false を返し、残りの要素をスキップするまで、初期要素を含む部分シーケンスを返します。
func randomElement() -> (key: Key, value: Value)?
コレクションのランダムな要素を返します。
func randomElement<T>(using: inout T) -> (key: Key, value: Value)?
与えられた発生器をランダム性のソースとして使用して、コレクションのランダムな要素を返します。
func reduce<Result>(Result, (Result, (key: Key, value: Value)) -> Result) -> Result
与えられたクロージャを使用してシーケンスの要素を結合した結果を返します。
func reduce<Result>(into: Result, (inout Result, (key: Key, value: Value)) -> ()) -> Result
与えられたクロージャを使用してシーケンスの要素を結合した結果を返します。
func reversed() -> ReversedCollection<KeyValuePairs<Key, Value>>
コレクションの要素を逆の順序で表示するビューを返します。
func shuffled() -> [(key: Key, value: Value)]
シャッフルされたシーケンスの要素を返します。
func shuffled<T>(using: inout T) -> [(key: Key, value: Value)]
乱数のソースとして与えられた発生器を使用してシャッフルされたシーケンスの要素を返します。
要素間の比較として与えられた述語 (predicate) を使用してソートされたシーケンスの要素を返します。
与えられた述語 (predicate) を満たす要素を含まない、コレクションの可能な限り長い部分シーケンスを順番に返します。
与えられた述語 (predicate) を同等性テストとして使用して、シーケンスの初期要素が別のシーケンスの要素と等しいかどうかを示すブール値を返します。
func suffix(Int) -> Slice<KeyValuePairs<Key, Value>>
コレクションの最終要素を含む、与えられた最大長までの部分シーケンスを返します。
func suffix(from: Int) -> Slice<KeyValuePairs<Key, Value>>
指定された位置からコレクションの最後までの部分シーケンスを返します。
body(p) を呼び出します。ここで p はコレクションの連続した記憶領域へのポインタです。そのような記憶領域が存在しない場合は、最初に作成されます。コレクションが連続した記憶領域形式の内部表現をサポートしていない場合、body は呼び出されず、nil が返されます。
サブスクリプト
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
指定された位置にある要素にアクセスします。
関連
以下に準拠
CustomDebugStringConvertible
CustomStringConvertible
ExpressibleByDictionaryLiteral
RandomAccessCollection
以下も見よ
特殊用途のコレクション
func repeatElement<T>(T, count: Int) -> Repeated<T>
指定された数の与えられた要素を含むコレクションを作成します。
struct CollectionOfOne
単一の要素を含むコレクション。
struct EmptyCollection
その要素型が Element であるが、常に空のコレクション。
typealias DictionaryLiteral     廃止  
トップへ(Swift 標準ライブラリ)
トップへ(Swift 標準ライブラリ)
トップへ(Swift 標準ライブラリ)
トップへ(Swift 標準ライブラリ)
トップへ(Swift 標準ライブラリ)
トップへ(Swift 標準ライブラリ)