Array<T>
Array は、そのすべてが同じ基本型 (T) でなければならない項目の順序付きコレクションを管理する汎用の型です。
配列の詳細については、コレクション型 を参照してください。
配列の作成
init()
宣言
init()
議論
このイニシャライザを使用して配列を作成します:
var emptyArray = Array<Int>()
はコンビニエンス構文を使用するのと同じです:
var equivalentEmptyArray = [Int]()
init(count:repeatedValue:)
与えられた数の要素分で配列を構築し、それぞれ同じ値に初期化します。
宣言
init(count: Int, repeatedValue: T)
議論
結果の配列は、その中に count 個の要素があり、repeatedValue の値として提供される同じ値にそれぞれ初期化されます。
例えば:
- let numericArray = Array(count: 3, repeatedValue: 42)
- // numericArray is [42, 42, 42]
- let stringArray = Array(count: 2, repeatedValue: "Hello")
- // stringArray is ["Hello", "Hello"]
配列要素へのアクセス
subscript(_: Int)
角括弧サブスクリプトを使用して配列内の既存の要素を取得または設定。
宣言
subscript(index: Int) -> T
議論
全ての配列内の個々の要素にアクセスするためにサブスクリプトを使用して下さい。
- var subscriptableArray = ["zero", "one", "two", "three"]
- let zero = subscriptableArray[0]
- // zero is "zero"
- let three = subscriptableArray[3]
- // three is "three"
もし var キーワードを使用して (つまり、変数として) 配列を宣言した場合は、配列内の既存の任意の要素の値を変更するためにサブスクリプトを使用できます。
- subscriptableArray[0] = "nothing"
- subscriptableArray[3] = "three items"
サブスクリプトを使って配列に追加項目を挿入することはできません。
- subscriptableArray[4] = "new item"
- // Fatal error: Array index out of range
配列に項目を追加したい場合は、代わりに append(_:) メソッドまたは += 演算子を使用して下さい。
let キーワードを使用して (つまり、定数として) 宣言した、配列内の既存の要素の値を変更するためにサブスクリプトを使用することはできません。
- let constantArray = ["zero", "one", "two", "three"]
- constantArray[0] = "nothing"
- // Error: cannot mutate a constant array
subscript(_: Range<Int>)
整数の範囲で角括弧のサブスクリプトを使用して、配列内の既存の要素の部分範囲を取得または設定します。
宣言
subscript(subRange: Range<Int>) -> Slice<T>
議論
全ての配列の1つ以上の既存の要素にアクセスするには、範囲サブスクリプトを使用して下さい。
- var subscriptableArray = ["zero", "one", "two", "three"]
- let subRange = subscriptableArray[1...3]
- // subRange = ["one", "two", "three"]
もし var キーワードを使用して (つまり、変数として) 配列を宣言した場合は、既存の要素の範囲の値を変更するためにサブスクリプトを使用できます。
- subscriptableArray[1...2] = ["oneone", "twotwo"]
- // subscriptableArray is now ["zero", "oneone", "twotwo", "three"]
交換する項目と同じ数の項目を提供する必要はありません。
- subscriptableArray[1...2] = []
- // subscriptableArray is now ["zero", "three"]
サブスクリプトを使って配列に追加項目を挿入することはできません。
- subscriptableArray[4...5] = ["four", "five"]
- // Fatal error: Array replace: subRange extends past the end
配列に項目を追加したい場合は、代わりに append(_:) メソッドまたは += 演算子を使用して下さい。
let キーワードを使用して (つまり、定数として) 宣言した、配列内の任意の値を変更するためにサブスクリプトを使用することはできません。
- let constantArray = ["zero", "one", "two", "three"]
- constantArray[1...2] = []
- // Error: cannot mutate a constant array
要素の追加と削除
append(_:)
既存の配列の最後の要素として新たな項目を追加します。
宣言
mutating func append(newElement: T)
議論
既存の配列に新しい項目を追加するには、このメソッドを使用して下さい。新しい要素は、コレクションの最後の項目として追加されます:
- var array = [0, 1]
- array.append(2)
- // array is [0, 1, 2]
- array.append(3)
- // array is [0, 1, 2, 3]
var キーワードを用いて配列を宣言した (つまり、変数として、定数でない) 場合にのみ、配列に新しい値を追加できます。
- let constantArray = [0, 1]
- constantArray.append(2)
- // Error: cannot mutate a constant array
insert(_:atIndex:)
与えられたインデックスのコレクションに要素を挿入します。
宣言
mutating func insert(newElement: T, atIndex i: Int)
議論
既存の項目の範囲内ならどこでもまたは最後の項目として、新しい要素を挿入するにはこのメソッドを使用して下さい:
- var array = [1, 2, 3]
- array.insert(0, atIndex: 0)
- // array is [0, 1, 2, 3]
インデックスは、コレクション内の項目の数以下か同じでなければなりません。より大きなインデックスに項目を挿入しようとすると、アサーションを引き起こします。
- array.insert(6, atIndex: 6)
- // Fatal error: Array replace: subRange extends past the end
var キーワードを用いて配列宣言した (つまり、変数として、定数でない) 場合にのみ、配列に新しい値を挿入できます。
- let constantArray = [1, 2, 3]
- constantArray.insert(0, atIndex: 0)
- // Error: cannot mutate a constant array
removeAtIndex(_:)
与えられたインデックスにある要素を削除し、それを返します。
宣言
mutating func removeAtIndex(index: Int) -> T
議論
与えられた index にある要素を削除するには、このメソッドを使用して下さい。メソッドの戻り値は、削除された要素です。
- var array = [0, 1, 2, 3]
- let removed = array.removeAtIndex(0)
- // array is [1, 2, 3]
- // removed is 0
インデックスは、コレクション内の項目数より小さくなければなりません。より大きなインデックスの項目を削除しようとすると、アサーションを引き起こします。
- array.removeAtIndex(5)
- // Fatal error: Array index out of range
var キーワードを使って配列を宣言した (つまり、変数として、定数でない) 場合にのみ、配列から要素を削除できます。
- let constantArray = [0, 1, 2]
- constantArray.removeAtIndex(0)
- // Error: cannot mutate a constant array
removeLast()
コレクションから最後の要素を削除し、それを返します。
宣言
mutating func removeLast() -> T
議論
受信者の最後の要素を削除するには、このメソッドを使用して下さい。メソッドの戻り値は、削除された要素です。
- var array = [1, 2, 3]
- let removed = array.removeLast()
- // array is [1, 2]
- // removed is 3
このメソッドを呼び出す前に、配列内に少なくとも一つの要素がなければなりませんーもし空の配列上でこのメソッドを呼び出すと、アサーションを引き起こします。
- var emptyArray = [Int]()
- let tryToRemove = emptyArray.removeLast()
- // Fatal error: can't removeLast from an empty Array
var キーワードを使って配列で宣言した (つまり、変数として、定数でない) 場合にのみ、配列から最後の項目を削除できます。
- let constantArray = [1, 2]
- constantArray.removeLast()
- // Error: cannot mutate a constant array
removeAll(keepCapacity:)
コレクションからすべての要素を削除し、デフォルトでは、基礎となるストレージ·バッファをクリアします。
宣言
mutating func removeAll(keepCapacity: Bool = default)
議論
配列内のすべての要素を削除するには、このメソッドを使用して下さい。
- var array = [0, 1, 2, 3]
- array.removeAll()
- let count = array.count
- // count is 0
特に指定しない限り、基礎となる補助記憶がクリアされます。
var キーワード使って配列を宣言した (つまり、変数として、定数でない) 場合にのみ配列からすべての項目を削除できます。
- let constantArray = [1, 2]
- constantArray.removeAll()
- // Error: cannot mutate a constant array
reserveCapacity(_:)
基礎となる補助記憶が、与えられた合計要素数を保持できることを保証します。
宣言
mutating func reserveCapacity(minimumCapacity: Int)
議論
配列は minimumCapacity で指定された要素の合計数を格納するための十分な連続する基礎補助記憶があることを確認します。
配列を照会
count
配列内の要素の数を表す整数値 (読み取り専用)。
宣言
var count: Int { get }
議論
配列の要素数を照会するために、この読み取り専用プロパティを使用して下さい。
- var array = ["zero", "one", "two"]
- let firstCount = array.count
- // firstCount is 3
- array += "three"
- let secondCount = array.count
- // secondCount is 4
isEmpty
配列が空であるかどうかを決定するブール値 (読み取り専用)。
宣言
var isEmpty: Bool { get }
議論
配列が空であるかどうかを照会するために、この読み取り専用プロパティを使用して下さい。
- var array = ["zero", "one", "two", "three"]
- let firstCheck = array.isEmpty
- // firstCheck is false
- array.removeAll()
- let secondCheck = array.isEmpty
- // secondCheck is true
capacity
どれだけ多くの合計の要素が配列の再割り当てすることなく保管できるかを表す整数値 (読み取り専用)。
宣言
var capacity: Int { get }
議論
補助記憶の再割り当てを引き起こすことなく、どれだけ多くの要素が合計で配列に格納できるかを照会するために、この読み取り専用プロパティを使用してください。
アルゴリズム
sort(_:)
提供された要素のペアの順序を決定するために与えられたクロージャを使用して所定の位置で配列を並べ替えます。
宣言
mutating func sort(isOrderedBefore: (T, T) -> Bool)
議論
配列内の要素を並べ替えるこのメソッドを使用して下さい。isOrderedBefore のため提供するクロージャは一つの要素が、他の要素の前か (true) 後か (false) を示すためにブール値を返す必要があります:
- var array = [3, 2, 5, 1, 4]
- array.sort { $0 < $1 }
- // array is [1, 2, 3, 4, 5]
- array.sort { $1 < $0 }
- // array is [5, 4, 3, 2, 1]
var キーワードを使用して (つまり、変数として) 配列を宣言した場合にのみ、所定の場所に配列を並べ替えることができます。
- let constantArray = [3, 2, 5, 1, 4]
- constantArray.sort { $0 < $1 }
- // Error: cannot mutate a constant array
sorted(_:)
与えられたクロージャを使用して、並べ替えた配列からの要素を含む配列を返します。
宣言
func sorted(isOrderedBefore: (T, T) -> Bool) -> [T]
議論
配列から並べ替えた要素を含む新しい配列を返すために、このメソッドを使用して下さい。isOrderedBefore のために提供するクロージャは一つの要素が、他の要素の前か (true) 後か (false) を示すためにブール値を返す必要があります:
- let array = [3, 2, 5, 1, 4]
- let sortedArray = array.sorted { $0 < $1 }
- // sortedArray is [1, 2, 3, 4, 5]
- let descendingArray = array.sorted { $1 < $0 }
- // descendingArray is [5, 4, 3, 2, 1]
reverse()
逆順のインデックスでの配列の要素を含む配列を返します。
宣言
func reverse() -> [T]
議論
逆の順序で配列の要素を含む新しい配列を返すためにこのメソッドを使用して下さい。つまり、最後の項目は最初に、最後から二番目は二番目に、などとなります。
- let array = [1, 2, 3, 4, 5]
- let reversedArray = array.reverse()
- // reversedArray = [5, 4, 3, 2, 1]
filter(_:)
提供されたクロージャが一致を示している配列の要素を含む配列を返します。
宣言
func filter(includeElement: (T) -> Bool) -> [T]
議論
既存の配列をフィルタリングして新しい配列を返すために、このメソッドを使用して下さい。 includeElement: のために提供するクロージャは、要素が含まれている (true) か、または最後のコレクションからを除外すべき (false) かどうかを示すためにブール値を返す必要があります:
- let array = [0, 1, 2, 3, 4, 5, 6, 7]
- let filteredArray = array.filter { $0 % 2 == 0 }
- // filteredArray is [0, 2, 4, 6]
map(_:)
配列の各要素のために提供された転換クロージャを適用した結果から構築された要素の配列を返します。
宣言
func map<U>(transform: (T) -> U) -> [U]
議論
既存の配列の各要素を変換するために提供されたクロージャを適用した結果を含む新しい配列を返すためにはこのメソッドを使用して下さい。
- let array = [0, 1, 2, 3]
- let multipliedArray = array.map { $0 * 2 }
- // multipliedArray is [0, 2, 4, 6]
- let describedArray = array.map { "Number: \($0)" }
- // describedArray is [Number: 0, Number: 1, Number: 2, Number: 3]
reduce(_:combine:)
各要素のために提供された削除クロージャを適用した結果を表す一つの値を返します。
宣言
func reduce<U>(initial: U, combine: (U, T) -> U) -> U
議論
提供されたクロージャを再帰的に適用して、一つの値に要素のコレクションを減らすために、このメソッドを使用して下さい。
- let array = [1, 2, 3, 4, 5]
- let addResult = array.reduce(0) { $0 + $1 }
- // addResult is 15
- let multiplyResult = array.reduce(1) { $0 * $1 }
- // multiplyResult is 120
以下のように2つの結果をビルドしました:
- 第1のクロージャ呼び出しの引数は、ユーザー指定の初期値と、コレクションの最初の要素です。
addResult の場合には、initialValue が 0 で、最初の要素が 1:{ 0 + 1 } ということを意味します。
multiplyResult の場合には、initialValue が 1 で、最初の要素が 1:{ 1 * 1 } ということを意味します。
- 次に、クロージャは以前の結果を最初の引数として、第二引数として第二の要素として、ともに呼び出されます。
addResult の場合には、結果として 1 で次の項目は 2:{ 1 + 2 } ということを意味します。
multiplyResult の場合には、結果として 1 で次の項目は 2:{ 1 * 2 }ということを意味します。
- クロージャは前の結果と次の要素を引数として呼び出され続けます:
addResult の場合には、それは { 3 + 3 }、{ 6 + 4 }、{ 10 + 5 }を意味し、最終的に 15 の結果となります。
multiplyResult の場合には、それは { 2 * 3 }、{ 6 * 4 }、{ 24 * 5 }を意味し、最終的に 120 の結果となります。
演算子
+=
既存の配列に対し配列またはコレクションの要素を追加します。
宣言
- func +=<T, S: SequenceType where S.Generator.Element == T>(inout lhs: [T], rhs: S)
- func +=<T, C: CollectionType where C.Generator.Element == T>(inout lhs: [T], rhs: C)
議論
+= 演算子は、既存の配列の最後に、配列またはコレクションの要素を追加する簡単な方法を提供します:
- var array = [0, 1, 2, 3]
- array += [4, 5, 6]
- // array is [0, 1, 2, 3, 4, 5, 6]
配列またはコレクション内の要素の型は、配列内の既存の要素の型と一致する必要があります。
- array += ["hello"]
- // Error: 'array' contains elements of type 'Int', not 'String'.
var キーワードを使用 (つまり、変数として、定数ではなく) して配列を宣言した場合にのみ、配列に配列またはコレクションの要素を追加する += 演算子を使用できます。
- let constantArray = [0, 1, 2]
- constantArray += [3]
- // Error: cannot mutate a constant array
前:文字列
次:Dictionary