Array<Element>
型
-
配列を表す
- 順序を持ったコレクション
-
Element
: プレースホルダ型- 具体的な型で置き換えて、
Array<Int>
やArray<String>
のように使う
- 具体的な型で置き換えて、
-
ジェネリック型
-
<>
内にプレースホルダ型を持つ型
-
-
糖衣構文(シンタックスシュガー)
-
Array<Element>
→[Element]
-
配列リテラル
配列リテラル
let a = [1, 2, 3]
let b = ["a", "b", "c"]
型推論
-
配列リテラルが含む要素の型からプレースホルダ型
Element
を推論する配列リテラルの型推論let strings = ["a", "b", "c"] // [String]型 let numbers = [1, 2, 3] // [Int]型
-
空の配列リテラルの場合、要素が存在しないので型推論できない
-
型アノテーションによりプレースホルダ型
Element
を決定する必要がある空の配列リテラルlet array: [Int] = []
-
-
配列リテラルが複数の型の要素を含む場合、型推論によって型が決定できない
-
型アノテーションによりプレースホルダ型
Element
を決定する必要がある複数の型の要素を含む配列リテラルlet array: [Any] = [1, "a"]
-
要素にできる型
-
Element
型の値を要素にできる -
Element
型にはどのような型も当てはめることができるIntの2次元配列let integerArrays = [[1, 2, 3], [4, 5, 6]] // [[Int]]型
-
要素の型と異なる型の値を含めた場合はコンパイルエラー
Array<Element>
型の操作
要素へのアクセス
- サブスクリプト
-
引数: 要素のインデックスを表すInt型の値
-
最初の要素のインデックスは0
-
インデックスが範囲外の場合は実行時エラー
要素へのアクセスlet strings = ["abc", "def", "ghi"] // インデックスは0, 1, 2 let strings1 = strings[0] // "abc" let strings2 = strings[1] // "def" let strings3 = strings[2] // "ghi" let strings4 = strings[3] // 実行時エラー(範囲外)
-
要素の更新
-
更新したい要素を取得して代入演算子
=
で値を設定要素の更新var strings = ["abc", "def", "ghi"] strings[0] = "xyz" strings // ["xyz", "def", "ghi"]
要素の追加
-
末尾に要素を追加
-
append(_:)
メソッドを使用末尾に要素を追加var integers = [1, 2, 3] integers.append(4) // [1, 2, 3, 4]
-
-
任意の位置に要素を追加(挿入)
-
insert(_:at:)
メソッドを使用- 引数: 追加する要素, 追加する位置のインデックス
要素を挿入var integers = [1, 2, 3] integers.append(4) // [1, 2, 3, 4]
-
配列の結合
-
+
演算子で型が一致するArray<Element>
型を結合配列の結合var integers1 = [1, 2, 3] // [Int]型 var integers2 = [4, 5, 6] // [Int]型 let result = integers1 + integers2 // [1, 2, 3, 4, 5, 6]
要素の削除
-
remove(at:)
メソッド- 任意のインデックスの要素を削除
-
removeLast()
メソッド- 最後の要素を削除
-
removeAll()
メソッド-
すべての要素を削除
要素の削除var integers = [1, 2, 3, 4, 5] // インデックス:2を削除 integers.remove(at: 2) integers // [1, 2, 4, 5] // 末尾を削除 integers.removeLast() integers // [1, 2, 4] // 全削除 integers.removeAll() integers // []
-