辞書の扱い
キーと値のペアのコレクションである辞書は、Dictionaryクラスで扱います。配列の際と同様に、不変/可変を意識せずに利用できます。辞書を宣言する際の書式は次のとおりです。
var 辞書名:Dictionary<型, 型> = Dictionary<型, 型>() var 辞書名 = [型: 型]() var 辞書名:[型: 型] = [key1: value1, key2: value2, ...] var 辞書名[:Dictionary<型, 型>] = [key1: value1, key2: value2, ...]
キーと値の型を指定してDictionaryクラスを初期化して辞書を宣言します。「[]」を使って省略した形式で書くことも可能です。変数の宣言と同様に、値を指定して配列を宣言する際には、型を省略することもできます。具体的な利用例は次のとおりです。
// 辞書を宣言 var dict:Dictionary<String,String> = Dictionary<String,String>(); // キーと値をセット dict["1"] = "Swift" dict["2"] = "Objective-c" println(dict) // 結果:[2: Objective-c, 1: Swift] println(dict.count) // 結果:2 // 省略した形式で辞書を宣言 var dic1 = [String: String]() // 型を指定して配列を宣言し、値を代入 var dic2:[String: String] = ["1":"Swift", "2":"Objective-C"] var dic3:Dictionary<String, String> = ["1":"Swift", "2":"Objective-C"]
Dictionaryクラスの主なプロパティ/メソッドには次のものがあります。
プロパティ/メソッド名 | 概要 |
---|---|
count | 辞書のキーと値の数を参照 |
keys | 辞書のキーだけを参照 |
values | 辞書の値だけを参照 |
updateValue(値, forkey:キー) | キーに対する値を更新 |
removeValueForKey(キー) | キーと値を削除 |
配列のときと同様に、最初に宣言した型以外のキー、値を追加することはできません。
丸括弧の省略
if文/for文/while文等では、条件式につける丸括弧が省略可能になりました。
var n = 10 if n > 5 { println("nは6以上です") } // 結果:「nは6以上です」を出力
条件分岐の拡張
switch文では、条件の分岐に文字列型を利用できるようになりました。さらに丸括弧とbreakが不要となり、switch文自体も簡単に記述できるようになりました。
ただし、breakが不要になった代わりに、defaultが必須になりました。defaultがないとエラーになってしまうので気をつけて下さい。
var animal:String = "cat" switch animal{ case "dog": println("犬です") case "cat": println("猫です") default: println("その他の動物です") } // 結果:「猫です」を出力 var score:Int = 60; switch score{ case 20...50: println("まだまでです") case 51...80: println("良いほうです") case 81...100: println("非常にいいです") default: println("がんばりましょう") } // 結果:「良いほうです」を出力
変数を埋め込む
バックスラッシュと中括弧で変数名を囲む「 \(変数名) 」で文字列の中等に変数を埋め込んで値を表示できます。Swiftでは、文字列と数値をそのまま結合することはできません。そのような場合に、変数の埋め込みを利用すると、型変換等の処理を行わずに文字列と数値の結合ができます。
var name:String = "Kenta" var age:Int = 3 println( "My name is \(name), I'm \(age) years old." ) // 結果:「My name is Kenta, I'm 3 years old.」を出力
ループの際にインデックスも同時に取得する
配列のループの際に値と同時にインデックスを取得するenumerate関数が追加されました。
var areaList : Array = ["関東","甲信越","北陸"] for (index,area) in enumerate(areaList){ println( String(index+1) + "番目 : " + area) } // 結果:「1番目 : 関東」、「2番目 : 甲信越」、「3番目 : 北陸」を出力
まとめ
今回はSwiftの簡単になったプログラミング、追加された代表的な機能の確認まで行いました。次回では実際にSwiftでクラスやメソッドの作り方等について説明を行う予定です。