Swiftでの配列の宣言・初期化・代入・参照の方法まとめ

19/03/03 16:48:53     19/04/08 09:41:11

Swiftの配列

配列はプログラミングで重要な概念の一つで、配列をいかに使いこなすかでソースコードの効率性が大きく変わってきます。

Swiftでもそれは同じです。このページでは、Swiftの配列の基本を解説していきます。

配列の宣言

配列を使用するためには最初に宣言する必要があります。

Swiftにおける配列の宣言は以下のようになります。

let 配列名 = [値1, 値2, 値3]

これは型を指定せずに配列を宣言したものです。

型を指定した場合、以下のようになります。

let 配列名: [Int] = [値1, 値2, 値3]

変数の宣言同様、コロン区切りで型を指定します。型推論が働くのも変数と同様なので、あえて初期値の型を指定する必要はありません。またvarとletの違いについてですが、varは変数や配列の要素を変えることができます。

逆にletは変数や配列の中身を変更できません。使い分けとしてはシンプルで、初期値から値を変更する可能性があるならvarで、初期値のまま変更したくない場合はletを使用した方が誤って要素を書き換えてしまうことがない分安全です。

配列の初期化

配列を宣言しさらにその配列を初期化します。サンプルコードは以下です。

var arrayString: [String] = []
var arrayFloats: Array<Float> = Array()

これで空の配列が二つできました。

次に配列を初期化する方法ですが、構文は以下のようになります。

Array(repeating: 初期値, count: 要素数)

この構文を使ったサンプルコードは以下です。

var arrayCounts = Array(repeating: 0, count: 5)
print(arrayCounts)

上記のコードを実行すると、出力結果は以下になります。

[0, 0, 0, 0, 0]

初期値が0でそれを5個カウントしました。

配列への要素の代入

配列に要素を代入する方法は上書きや追加がありますが、ここでは追加を説明します。上書きの場合要素番号を指定して要素を書くだけなので、追加ができれば上書きもできます。配列に要素を追加するにはappendメソッドを使用します。

記述方法は以下です。

配列.append(値)

配列に対してメソッドを使用し、引数に追加したい値を指定します。

サンプルコードは以下です。

var foods =
["ラーメン", "チャーハン", "餃子", "天津飯", "杏仁豆腐"]

foods.append("青椒肉絲");

for value in foods {
    print("\(value)")
}

上記のサンプルコードを実行すると、以下のようにコンソール出力されます。

ラーメン
チャーハン
餃子
天津飯
杏仁豆腐
青椒肉絲

青椒肉絲が追加されました。

appendメソッドを使用せず、演算子で要素追加することも可能です。

以下のサンプルコードのようになります。

var foods =
["ラーメン", "チャーハン", "餃子", "天津飯", "杏仁豆腐"]

foods += ["青椒肉絲"];

for value in foods {
    print("\(value)")
}

このコードでも同様の結果が得られます。

ラーメン
チャーハン
餃子
天津飯
杏仁豆腐
青椒肉絲

要素が一つ追加されました。

また追加と同じような方法で要素を結合することができるので、合わせて紹介しておきます。

具体的にはjoinedメソッドを使うと配列の要素が結合されます。以下はサンプルコードです。

var foods =
["ラーメン", "チャーハン", "餃子", "天津飯", "杏仁豆腐"]
var str:String = foods.joined()
print(str)

このコードを実行すると、以下のようにすべての要素が結合されて出力されます。

ラーメンチャーハン餃子天津飯杏仁豆腐

上の例ではjoinedの引数に何も指定しませんでした。何も指定しないとjoinedの結合で区切るものがないためすべての要素がつながるのですが、引数に区切り文字を指定することができます。

たとえば以下のサンプルコードのようになります。

var foods =
["ラーメン", "チャーハン", "餃子", "天津飯", "杏仁豆腐"]
var str:String = foods.joined(separator: ",")
print(str)

上記のコードを実行すると、以下のようにコンソール出力されます。

ラーメン,チャーハン,餃子,天津飯,杏仁豆腐

カンマ区切りで出力されました。joinedの引数でseparatorを指定した結果、このようになっています。

配列の値渡しと参照渡し

Swiftの配列では値渡しと参照渡しが可能です。値渡しは元の配列の値をコピーし、それを渡す方法です。参照渡しは元の値を参照するための場所を渡すものです。値渡しの場合元の値ではなくコピーしたものなので、値を書き換えても元の値が変わることはありません。

一方で、参照渡しの場合場所を渡しているだけなので、値を書き換えると元の配列の中身が変わります。以下は値渡しのサンプルコードです。

func plusOne(array : [Int]) -> [Int] {
    var array = array
    for i in 0 ..< array.count {
        array[i] = array[i] + 1
    }
    return array
}

var oldArray = [0, 1, 2]
print(oldArray) // => [0, 1, 2]
var newArray = plusOne(array: oldArray) // => [1, 2, 3]
print(oldArray) // => [0, 1, 2]

次に、参照渡しのサンプルコードです。

func plusOne(array : inout [Int]) -> [Int] {
    for i in 0 ..< array.count {
        array[i] = array[i] + 1
    }
    return array
}

var oldArray = [0, 1, 2]
print(oldArray) // => [0, 1, 2]
var newArray = plusOne(array: &oldArray) // => [1, 2, 3]
print(oldArray) // => [1, 2, 3]

値渡しではoldArrayの中身に変化がありませんが、参照渡しではoldArrayの中身が変わっています。

参照渡しでoldArrayの中身が変わったのはコードを見るとわかる通りplusOneが呼び出されたタイミングです。

とはいえ配列を使い始めて間もないうちに参照渡しや値渡しを使うことはないので、今の段階ではこういったコードもあるんだ、ということを把握しておけば良いかと思います。まずは上で紹介したような、宣言、初期化、追加、などの基本を押さえておくことが重要です。

まとめ

他のプログラミング言語の経験がある方は、Swiftの配列が特別難しいわけではない、ということがわかったかと思います。Swiftの配列が他の言語と比べて特別なわけではなく、逆に言えばSwiftの配列を学習しておけば他のプログラミング言語にも応用が利きます。

Swiftに限らず配列はプログラミングにおける基本概念の一つで、これを知らないと実践的なプログラミングは不可能と言っても過言ではありません。なぜなら配列を使わないと一つ一つの要素に対して変数を用意することになり、要素数が多ければ多いほどとてつもなく冗長なコードになってしまうからです。

案件量が豊富なアルマサーチ

アルマサーチ

最後に、アルマサーチのご紹介!

アルマサーチはフリーランス向けに案件をご紹介することに特化したエージェントサービスです。豊富な案件量から、安定して継続的な案件のご紹介を実現しており、口コミから登録エンジニアが急増中です。

アルマサーチが選ばれる理由

  1. 豊富な案件量。週3〜4日の案件や在宅リモート案件も。
  2. 優秀なコンサルタント陣。
  3. 案件に参画後もしっかりサポート。

豊富な案件量

フリーランス向けに特化し、業界屈指の案件量を誇ります!週3〜4日の案件や、在宅リモート案件もありますし、その他あらゆる希望をしっかりお伝えください。最適な案件のご紹介をさせていただきます。

優秀なコンサルタント陣

技術に疎く、開発の希望を伝えても響かないエージェント・・・嫌ですよね。アルマサーチにはそのような者は一切おりません!さらに独立にまつわる税金や保険関係に詳しいスタッフが徹底的にサポートさせていただきます。

案件に参画後もしっかりサポート

常駐先が決まった瞬間に、一度も連絡が取れなくなるエージェント・・・いますよね?アルマサーチでは、そのようなことは一切ありません!常に電話やメールは即対応しますし、月に1度のランチミーティングなどから現場の状況を細かくヒアリングし、就業環境改善に尽力いたします。

相談する

▼Swift関連の記事一覧
1, 【Swiftのフリーランス案件情報付き】仕事やエンジニアの将来性・学習方法!
2, 繰り返し処理に使えるSwiftのfor文とfor-in文の便利な使い方まとめ
3, 条件分岐に便利なSwiftのSwitch文の使い方まとめ
4, アプリ開発でよく使うSwiftの4つの文法を解説します
5, Swiftのoptional型を使いこなすための7つのポイント
6, Swiftで文字列を扱うためのstring型の使い方
7,(この記事)Swiftでの配列の宣言・初期化・代入・参照の方法まとめ
8, 実際の開発現場でのSwiftの変数・定数の使われ方を解説します
9, Swiftでif let文を使って出来ることとguard letの使い分けに関して
10, 開発現場でよく使うSwiftのif文の条件分岐をまとめました
11, SwiftにおけるTupleの使い方とわかりやすく解説します
12, 初心者にオススメのSwiftのサンプルコードをまとめてみました
13, SwiftのString、Int、Doubleの型の変換方法をまとめました
14, 開発現場で役に立つSwiftのクロージャの使い方
15, Swiftでwhileを使って上手に繰り返し処理を行おう
16, Swiftで文字列の長さをチェックするのにlengthを使ってみよう
17, Swiftのdictionaryの使い方と初期化方法をまとめました
18, Swiftの値渡しと参照渡しに関するまとめ
19, Swiftで参照渡ししたい時のinoutの便利な使い方
20, Swiftでfor-in文でindexを使いたい時の方法まとめ
21, Swiftでのクラスとstruct(構造体)の使い分けを解説します

人気記事

編集部おすすめ記事

この記事を読んだ人はこんな記事を読んでいます

案件探しやフリーランスになるための相談する