[Swift コレクションを表す型 第1回] Array型

f:id:KAFAppFactory:20200731105740j:plain

Swiftのコレクションを表す型について数回に分けてまとめていきます。

コレクションとは、値の集まりのことで、Swiftでは、配列や辞書、範囲、文字列を表すコレクションがあります。

本記事は「Swift実践入門」を参考にしています。

gihyo.jp

まずは、配列のArray型...!

配列を表すArray型は、順序を持ったコレクションになります。
実際にはArray<Int>型やArray<String>型のように使用します。
Array型には[Int]のように既に定義されている構文をより簡単に読み書きできるようになっています。
(解説書では、このように表現できるものを糖衣構文と呼んでいました。)

配列リテラル

Array型は、[1, 2, 3] ["a", "b", "c"]のように配列リテラルを用いて表現可能です。

上記の例のように[]内に,区切りで要素を列挙していきます。

ここで、配列リテラル型推論に関して説明すると、 配列リテラルが含む要素の型から推論されます。

例えば、String型の要素しか持っていない場合は[String]型と推論されるといった具合です。

空の配列リテラルや複数の型の要素を持つ場合は、型推論が行われません。

その場合は、明示的に表記してあげる必要があります。

例 )

let array: [Any] = [1, "a"]

上記の例で、要素の型とは異なる型の値を含めた場合はコンパイルエラーとなります。

例 )

let complex: [Int] = [1, 2, 3, "a"]

また、例えば、二次元配列を定義したい場合は、[[Int]]型のように配列リテラルをさらに配列リテラルで囲みます。

let integerArrays = [[1, 2, 3], [4, 5, 6]]

要素へのアクセス

要素へアクセスするには、サブスクリプトを使用します。
サブスクリプトとは、コレクションにインデックスを与え、そのインデックスに位置する要素の習得や書き換えを行う機能です。コレクションに[]で囲んだインデックスを後置し、コレクション[インデックス]という書式で利用します。

サブスクリプトの引数には、要素のインデックスを表すInt型の値を使用します。
最初の要素のインデックスは0で1,2と続きます。

インデックスが範囲外の場合はエラーとなります。

例 )

let aisatsu = ["Hello", "GoodBye", ''See you"]
let aisatsu1 = String[1] // "GoodBye"
let aisatsu4 = String[3] // 3は範囲外のためエラー

要素の更新、追加、結合等も行うことができます。 言葉で説明するより、例で紹介した方が理解しやすいと思いますので列挙していきます!

更新

例 )

var aisatsu = ["Hello", "GoodBye", ''See you"]
aisatsu[1] = "Sayonara"
print(aisatsu)

実行結果 )

["Hello", "Sayonara", "See you"]

追加

例 )

var aisatsu = ["Hello", "GoodBye", ''See you"]
aisatsu.append[4] = "Hi"
print(aisatsu)

実行結果 )

["Hello", "Sayonara", "See you", "Hi"]

※任意の位置に追加するにはinsert(_:at:)を使用します。

例 )

var aisatsu = ["Hello", "GoodBye", ''See you"]
aisatsu.insert("Hi", at:1)
print(aisatsu)

実行結果 )

["Hello", "Hi", "Sayonara", "See you"]

結合

例 )

var aisatsu1 = ["Hello", "GoodBye"]
var aisatsu2 = [''See you"]
var aisatsu = aisatsu1 + aisatsu2
print(aisatsu)

実行結果 )

["Hello", "GoodBye", "See you"]

削除

削除には、任意の要素を削除、最後の要素を削除、全ての要素を削除するそれぞれのメソッドの 3つのがあります。

例 )

var number = ["1", "2", "3", "4", "5"]

// 任意の要素を削除
number.remove(at:2)
// 最後の要素を削除
number.removeLast()
//  全ての要素を削除
number.removeAll()

終わりに

今回、Swift コレクションを表す型としてArray型を説明しました!配列の基礎となる部分ですので、要素の代入や任意の位置の削除など押さえておきましょう!