Menu

Category

Archive

logo


The Swift Programming Language ~ Collection Types [Array]

2014-06-07 16:30:00 +0900
  • このエントリーをはてなブックマークに追加

iBooks にある “The Swift Programming Language” の勉強メモ。Objective-C と C を普段書いている自分から、ちょっと馴染みがないものを特にまとめておきます。目次は こちら

今回は、Collection Types の章の Array に関して。

Collection Types

1. Swing Array

Swift の Array は、型に厳格です。NSString ではできましたが、一つの Array に異なるデータ型を組み合わせて保存することはできません。また、次に紹介する Dictionary も同様です。

2. Array 型 のシンタックス

Array 型を作成するには、二通りあります。しかし、二つ目の [] を使用した方法がより簡単なので、ドキュメントもこちらを使用しています。

1
2
var list1: Array<Int> = [1, 2, 3]
var list2: Int[] = [1, 2, 3]

3. Array の要素数

Array の要素数を得るには、読み込み専用の count プロパティを参照します。

1
list1.count // 3

4. Array が空かのチェック

Array.count が 0 であるかをチェックするには、isEmpty プロパティを使用できます。

1
2
3
4
5
if list2.isEmpty {
	println("This is empty array")
} else {
	println("This isn't empty array")
}

5. 要素の追加

Array を var で宣言していれば、新しく配列を追加することができます。いくつかの方法があります。

まずは、append()を使用する方法。

1
list2.append(1)

次に、+= を使用する方法。

1
2
list2 += 2 // add one element
list2 += [3, 4, 5] // add multiple elements

また、insert(atIndex:) メソッドを使用する方法。index を指定しますが、上書きするのではなく、その要素の場所に新しく値を入れて、前後を調整してくれます。失う要素はないです。

1
2
3
var list = [1, 2, 3]
list.insert(0, atIndex: 0)
list // [0, 1, 2, 3]

6. 要素の削除

要素を削除する方法もいくつかあります。

まずは、removeAtIndex()。削除された結果生まれる隙間は後続の要素が埋めてくれます。また、削除された値を返します。

1
var removedItem = list.removeAtIndex(1)

最後の要素を削除するには、removeLast()。また、削除された値を返します。

1
var removedItem = list.removeLast()

全て削除するには、removeAll(keepCapacity:)。

1
list.removeAll(keepCapacity: true)

7. 要素の範囲選択

Array の要素を range operator のように選択することができます。

1
2
3
4
5
var arr = [1, 2, 3, 4, 5]
arr[0...2] // [1, 2, 3]
arr[0..2]  // [1, 2]
arr[0..2] = [] // [3, 4, 5]
arr[0..3] = [1, 2] // [1, 2]

このコードのように、柔軟に追加や削除等ができます。Playground で遊んでみるとわかりやすいと思います。

8. index と一緒に iteration

グローバル enumerate 関数を使用すれば、index と値の tuple を返してくれます。Array の index を使用したい時に便利です。

1
2
3
4
5
6
7
8
9
var list = [10, 20, 30]
for (i, item) in enumerate(list) {
    println("\(i) : \(item)")
}
/* Output:
0 : 10
1 : 20
2 : 30
*/

9. Array の init, reset, default value

ある型の空の Array の作成

1
var someInts = Int[]() // count is 0

Array のリセット

1
2
someInts.append(3)
someInts = [] // empty Int Array

Array のサイズとデフォルト値を持っての初期化。

1
2
3
var threeDoubles = Dounle[](count: 3, repeatedValue: 0.0)
// [0.0, 0.0, 0.0]
var anotherThreeDoubles = Array(count: 3, repeatedValue: 2.5)

10. Array の結合

String と同じ要領で二つの Array を結合できます。

1
2
3
4
threeDoubles // [0.0, 0.0, 0.0]
anotherThreeDoubles // [2.5, 2.5, 2.5]
var sixDoubles = threeDoubles + anotherThreeDoubles
// sixDoubles is inferred as Double[], and equals [0.0, 0.0, 0.0, 2.5, 2.5, 2.5]