English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Swift 配列(Array)

このチュートリアルでは、配列の作成、配列の値のアクセス、配列の一般的な操作について学びます。

前回Swift データ型の記事では、単一の値を保存できるデータ型の変数の作成方法を学びました。/定数を使用します。

しかし、同じデータ型の複数の値を格納する必要がある場合、どうすればいいですか。Swiftでは、 配列 のものです。

配列とは何ですか?

配列は、データのリストを保存するコンテナであり、データの種類の複数のデータ(値)を一意の順序で保存できます。つまり、配列内の各要素と同じ順序で要素を取得できます。

配列は、Int、String、Classなどの値などのデータ型を格納できます。

Swiftで配列を宣言する方法は?

データ型を括弧内の[]で指定することで空の配列を作成できます。

覚えておいてください、タイプを括弧内に含めないと、Swiftはそれを通常のデータ型とみなし、そこに一つの値しか格納できません。

例1:空の配列を宣言します

let emptyIntArr:[Int] = []
print(emptyIntArr)

このプログラムを実行すると、出力は以下のようになります:

[ ]

上記のプログラムでは、emptyIntArrという変数を宣言し、整数配列を格納し、0値で初期化しました。

または

空の配列を以下のように定義できます:

let emptyIntArr:Array<Int> = Array()
print(emptyIntArr)

または

Swiftは型推論言語であるため、データ型を指定せずに直接配列を作成することもできますが、コンパイラがそのデータ型を推論するために値を初期化する必要があります:

例2:特定の値を持つ配列を宣言します

let someIntArr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(someIntArr)

このプログラムを実行すると、出力は以下のようになります:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

上記のプログラムでは、someIntArrという変数を宣言し、Integer配列を格納することができますが、データ型を明示的に指定する必要はありません。また、値 1、2、3、4、5、6、7、8、9 配列を初期化しました。

例3:指定数の単一の繰り返し値を含む配列を宣言します

Swiftで配列を構成するために値を指定回数に繰り返すことができます。これは、配列初期化子とrepeatingおよびcountを一緒に使用して行われます。

let arrWithRepeatingValues = Array(repeating: "こんにちは、世界", count: 4)
arrWithRepeatingValuesをプリントします

このプログラムを実行すると、出力は以下のようになります:

["こんにちは、世界", "こんにちは、世界", "こんにちは、世界", "こんにちは、世界"]

上記のプログラムでは、定数 arrWithRepeatingValues を定義し、この定数は文字列を格納しています。 Hello,World の配列同じ値を繰り返し4次に、例で指定されたcount。

注意:Swiftでは、他のプログラミング言語と同様に定長サイズの配列を作成することはできません。定長サイズの配列とは、配列が初期化時に定義された要素数よりも多くの要素を含むことができないことを意味します。

値は配列内にどのように格納されるか?

以下のように、文字列配列を格納できる定数があると仮定します:

let intArr = [21, 34, 54, 12]

値は配列内にどのように格納されるかのグラフィカルな表示は以下の通りです:

あなたが作成したすべての配列はインデックス0から始まります。最初の要素はインデックス0に格納され、次の要素は次のインデックス(1)、そのように続けます。

Swiftで配列要素にアクセスする方法は?

以下のようにアクセスできますインデックス语法を使用して配列の要素にアクセスする方法、つまり、アクセスしたい値のインデックスを配列名の後の括弧内に含める必要があります。

あなたが上記のように宣言した配列 intArr があると仮定すると、最初の要素は intArr[0]、次の要素は intArr[1]、そのように続けます。

例4:配列の要素にアクセス

let intArr = [21, 34, 54, 12]
print(intArr[0])
print(intArr[1]
print(intArr[2]
print(intArr[3]

このプログラムを実行すると、出力は以下のようになります:

21
34
54
12

また、以下のようにfor-ループで配列の要素にアクセスします。詳細については、以下を参照してください:Swift for-ループ内で.

Swiftでどのように変更するか/配列要素を追加する方法?

配列の要素を変更するために、インデックス语法と代入演算子を使用できます。つまり、更新したい値のインデックスを配列名の後の括弧内に含め、その後代入演算子と新しい値を指定する必要があります。

例5:配列の要素の変更

var intArr = [21, 34, 54, 12]
intArr[0] = 12
intArr[1] = 42
intArr[2] = 45
intArr[3] = 21
print(intArr)

このプログラムを実行すると、出力は以下のようになります:

[12, 42, 45, 21]

以下のように、新しい値を使用して配列のすべての要素を変更することもできます:

例6:配列全体の変更

var intArr = [21, 34, 54, 12]
intArr = [1,2,3]
print(intArr)

このプログラムを実行すると、出力は以下のようになります:

[1, 2, 3]

ただし、既存の配列に新しい要素を追加する場合、インデックス语法を使用することはできません。これをすると、最終的にエラーが発生します。以下の操作はできません:

例7:インデックス语法を使用して配列に新しい要素を追加(無効)

var intArr = [21, 34, 54, 12]
intArr[4] = 10

このプログラムを実行すると、出力は以下のようになります:

致命的なエラー: 範囲外のインデックス

新しい要素を配列 intArr に割り当てる際に、上記のプログラムはエラーを返します。これは、intArr がまだインデックス4追加のメモリを割り当てますが、指定された値を格納することができません。

新しい要素を正しく配列に挿入するために、arrayのappend()メソッドを使用します。append()メソッドの使用方法については後で説明します。

配列内蔵の関数と属性

1. isEmpty 属性

この属性は、配列が空かどうかを決定します。配列に値が含まれていない場合、trueを返し、それ以外の場合はfalseを返します。

例8:isEmptyはどのように動作しますか?

let intArr = [21, 34, 54, 12]
print(intArr.isEmpty)

このプログラムを実行すると、出力は以下のようになります:

false

2.first 属性

この属性は配列の最初の要素にアクセスするために使用されます。

例9:firstはどのように動作しますか?

let intArr = [21, 34, 54, 12]
print(intArr.first)

このプログラムを実行すると、出力は以下のようになります:

Optional(21)

同様に、last属性を使用して配列の最後の要素にアクセスできます。

3.append 関数(追加)

append関数は配列の末尾に要素を挿入するために使用されます。/要素を追加します。

例10:appendはどのように動作しますか?

var intArr = [21, 34, 54, 12]
intArr.append(32)
print(intArr)

このプログラムを実行すると、出力は以下のようになります:

[21, 34, 54, 12, 32]

配列の内容を別の配列に追加することもできます:

var firstArr = [1,2,3,4]
var secondArr = [5,6,7,8]
firstArr.append(contentsOf: secondArr)
print(firstArr)

このプログラムを実行すると、出力は以下のようになります:

[1, 2, 3, 4, 5, 6, 7, 8]

4.insert 関数(挿入)

この関数は配列の特定のインデックスに要素を挿入するために使用されます。/要素を追加します。

例11:insertはどのように動作しますか?

var intArr = [21,34,54,12]
intArr.insert(22, at: 1)
print(intArr)

このプログラムを実行すると、出力は以下のようになります:

[21, 22, 34, 54, 12]

同様に、removepropertyを使用して指定されたインデックス处的要素を削除することもできます。

5.remove() 関数(削除)

この関数は指定された位置に指定された値を配列から削除し、返します。

例12:removeはどのように動作しますか?

var strArr = ["ab","bc","cd","de"]
let removedVal = strArr.remove(at: 1)
print("removed value is \(removedVal)")
print(strArr)

このプログラムを実行すると、出力は以下のようになります:

removed value is bc
["ab", "cd", "de"]

同様に、removeFirstを使用して配列の最初の要素を削除、removeLastを使用して配列の最後の要素を削除、removeAllを使用して配列を空にすることもできます。

6.reversed() 関数(逆転)

この関数は配列の要素を逆の順序で返します。

例13:reversed()はどのように動作しますか?

var intArr = [21,22,23,24]
let reversedArr = Array(intArr.reversed())
print(reversedArr)

このプログラムを実行すると、出力は以下のようになります:

[24, 23, 22, 21]

7.count 属性(カウント)

此属性は配列中の要素の総数を返します。

例14:count カウント

let floatArr = [10。2,21。3,32.0,41。3]
print(floatArr.count)

このプログラムを実行すると、出力は以下のようになります:

4

注意事項

Swiftでアンダースコアを使用して配列の要素にアクセスする際には、その値がインデックス内にあることを確認する必要があります。他に、ランタイムクラッシュが発生します。以下の例を確認してください:

let intArr = [21, 34, 54, 12]
print(intArr[-1]

このプログラムを実行すると、出力は以下のようになります:

致命的なエラー: 範囲外のインデックス

上記のプログラムでは、インデックス -1 中値はありません。したがって、インデックス位置の値にアクセスしようとすると、ランタイムクラッシュが発生します。

このような状況を避けるためには、まず削除する要素のインデックスを探してください。次に、以下のようにインデックス位置の要素を削除します:

var intArr = [21, 34, 54, 12]
if let index = intArr.index(of: 34) {
    print("found index")
    let val = intArr.remove(at: index)
    print(val)
}

このプログラムを実行すると、出力は以下のようになります:

found index
34