Swift 配列

Swift 配列は、順序付きリストを使用して同じ型の複数の値を格納します。同じ値を配列の異なる位置に複数回出現させることができます。

Swift 配列は要素の型を強制的にチェックし、型が異なる場合はエラーを報告します。Swift 配列は Array<Element> のような形式に従うべきであり、Element はこの配列内で唯一許可されるデータ型です。

配列を作成して変数に代入すると、作成されたコレクションは変更可能になります。これは、配列を作成した後に、追加・削除・変更によって配列内の項目を変更できることを意味します。配列を定数に代入すると、配列は変更できなくなり、配列のサイズと内容を変更することはできません。


配列の作成

特定のデータ型からなる空の配列を作成するには、構文を使用できます:

var someArray = [SomeType]()

初期化サイズの配列を作成する構文は次のとおりです:

var someArray = [SomeType](repeating: InitialValue, count: NumbeOfElements)

次の例では、型が Int、数が 3、初期値が 0 の空の配列を作成します:

var someInts = [Int](repeating: 0, count: 3)

次の例では、3 つの要素を含む配列を作成します:

var someInts:[Int] = [10, 20, 30]

配列へのアクセス

配列のインデックスを使用して配列の要素にアクセスできます。構文は次のとおりです:

var someVar = someArray[index]

インデックスは 0 から始まります。つまり、インデックス 0 は最初の要素に対応し、インデックス 1 は 2 番目の要素に対応し、以下同様に続きます。

次の例を通して、配列の作成、初期化、アクセス方法を学ぶことができます:

import Cocoa

var someInts = [Int](repeating: 10, count: 3)

var someVar = someInts[0]

print( "第一个元素的值 \(someVar!)" )
print( "第二个元素的值 \(someInts[1]!)" )
print( "第三个元素的值 \(someInts[2]!)" )

上記のプログラムを実行すると、出力結果は次のようになります:

第一个元素的值 10
第二个元素的值 10
第三个元素的值 10

配列の変更

append() メソッドまたは代入演算子 += を使用して、配列の末尾に要素を追加できます。以下に示すように、配列を初期化して要素を追加します:

import Cocoa

var someInts = [Int]()

someInts.append(20)
someInts.append(30)
someInts += [40]

var someVar = someInts[0]

print( "第一个元素的值 \(someVar)" )
print( "第二个元素的值 \(someInts[1])" )
print( "第三个元素的值 \(someInts[2])" )

上記のプログラムを実行すると、出力結果は次のようになります:

第一个元素的值 20
第二个元素的值 30
第三个元素的值 40

インデックスを使用して配列要素の値を変更することもできます:

import Cocoa

var someInts = [Int]()

someInts.append(20)
someInts.append(30)
someInts += [40]

// 修改最后一个元素
someInts[2] = 50

var someVar = someInts[0]

print( "第一个元素的值 \(someVar)" )
print( "第二个元素的值 \(someInts[1])" )
print( "第三个元素的值 \(someInts[2])" )

上記のプログラムを実行すると、出力結果は次のようになります:

第一个元素的值 20
第二个元素的值 30
第三个元素的值 50

配列の走査

for-in ループを使用して、配列内のすべてのデータ項目を走査できます:

import Cocoa

var someStrs = [String]()

someStrs.append("Apple")
someStrs.append("Amazon")
someStrs.append("サンプル")
someStrs += ["Google"]

for item in someStrs {
   print(item)
}

上記のプログラムを実行すると、出力結果は次のようになります:

Apple
Amazon
サンプル
Google

各データ項目の値とインデックス値の両方が必要な場合は、String の enumerated() メソッドを使用して配列を走査できます。例は次のとおりです:

import Cocoa

var someStrs = [String]()

someStrs.append("Apple")
someStrs.append("Amazon")
someStrs.append("サンプル")
someStrs += ["Google"]

for (index, item) in someStrs.enumerated() {
    print("在 index = \(index) 位置上的值为 \(item)")
}

上記のプログラムを実行すると、出力結果は次のようになります:

在 index = 0 位置上的值为 Apple
在 index = 1 位置上的值为 Amazon
在 index = 2 位置上的值为 サンプル
在 index = 3 位置上的值为 Google

配列の結合

加算演算子(+)を使用して、既存の同じ型の 2 つの配列を結合できます。新しい配列のデータ型は、2 つの配列のデータ型から推論されます:

import Cocoa

var intsA = [Int](repeating: 2, count:2)
var intsB = [Int](repeating: 1, count:3)

var intsC = intsA + intsB

for item in intsC {
    print(item)
}

上記のプログラムを実行すると、出力結果は次のようになります:

2
2
1
1
1

count プロパティ

count プロパティを使用して、配列の要素数を計算できます:

import Cocoa

var intsA = [Int](count:2, repeatedValue: 2)
var intsB = [Int](count:3, repeatedValue: 1)

var intsC = intsA + intsB

print("intsA 元素个数为 \(intsA.count)")
print("intsB 元素个数为 \(intsB.count)")
print("intsC 元素个数为 \(intsC.count)")

上記のプログラムを実行すると、出力結果は次のようになります:

intsA 元素个数为 2
intsB 元素个数为 3
intsC 元素个数为 5

isEmpty プロパティ

読み取り専用プロパティ isEmpty を使用して、配列が空であるかどうかを判断し、ブール値を返します:

import Cocoa

var intsA = [Int](count:2, repeatedValue: 2)
var intsB = [Int](count:3, repeatedValue: 1)
var intsC = [Int]()

print("intsA.isEmpty = \(intsA.isEmpty)")
print("intsB.isEmpty = \(intsB.isEmpty)")
print("intsC.isEmpty = \(intsC.isEmpty)")

上記のプログラムを実行すると、出力結果は次のようになります:

intsA.isEmpty = false
intsB.isEmpty = false
intsC.isEmpty = true
その他の拡張