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 var list1: Array<Int> = [1, 2, 3]
2 var list2: Int[] = [1, 2, 3]

3. Array の要素数

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

1 list1.count // 3

4. Array が空かのチェック

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

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

5. 要素の追加

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

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

1 list2.append(1)

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

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

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

1 var list = [1, 2, 3]
2 list.insert(0, atIndex: 0)
3 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 var arr = [1, 2, 3, 4, 5]
2 arr[0...2] // [1, 2, 3]
3 arr[0..2]  // [1, 2]
4 arr[0..2] = [] // [3, 4, 5]
5 arr[0..3] = [1, 2] // [1, 2]

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

8. index と一緒に iteration

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

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

9. Array の init, reset, default value

ある型の空の Array の作成

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

Array のリセット

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

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

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

10. Array の結合

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

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