iOSアプリ開発入門者のためのSwift文法チートシート
iOSアプリ開発をはじめるにあたり、プログラミング言語Swiftの習熟が必須である。*1
僕のように若くないエンジニアにとって、新しいプログラミング言語を勉強するときは、その文法に慣れるまでが大変で骨が折れる作業となる。 Swiftのさまざまな文法について、記述方法と実行結果について備忘録としてまとめたので紹介する。*2
実行はUbuntuで行っている。UbuntuにSwiftをインストールする方法は、以下の記事を参照。
定数と変数
定数
1> let s:String = "foo" s: String = "foo" 2> s = "bar" // 定数の値を書き換えることはできない repl.swift:2:3: error: cannot assign to value: 's' is a 'let' constant s = "bar" ~ ^ repl.swift:1:1: note: change 'let' to 'var' to make it mutable let s:String = "foo" ^~~ var 3>
変数
1> var s:String = "foo" s: String = "foo" 2> s = "bar" // 変数の値を書き換えることはできる 3> s $R0: String = "bar" 4>
基本データ型
整数
1> var i:Int = 10 i: Int = 10 2> i + 10 $R0: Int = 20 3>
浮動小数点数
1> var f:Float = 0.1 f: Float = 0.100000001 2> var d:Double = 0.1 d: Double = 0.10000000000000001 3>
真偽値
1> var b:Bool = true b: Bool = true 2> b == true $R0: Bool = true 3> b == false $R1: Bool = false 4>
文字列
1> var s:String = "Swift" s: String = "Swift" 2> print("Hello " + s) Hello Swift 3> print("Hello \(s)") Hello Swift 4>
制御構造
if文
1> var score = 100 score: Int = 100 2> if (score > 90) { 3. print("Excellent") 4. } else { 5. print("...") 6. } Excellent 7>
switch文
1> var c = 3 c: Int = 3 2> switch c { 3. case 1: 4. print("case 1") 5. case 2: 6. print("case 2") 7. case 3: 8. print("case 3") 9. fallthrough // デフォルトではfallthroughしない 10. case 4: 11. print("case 4") // ここでbreakされる 12. default: 13. print("default") 14. } case 3 case 4 15>
for文
1> for i in 0...2 { 2. print(i) 3. } 0 1 2 4> for _ in 0...2 { // 変数が必要ない場合 5. print("hello") 6. } hello hello hello 7>
while文
1> var i = 0 i: Int = 0 2> while (i < 2) { 3. print(i) 4. i++ 5. } 0 1 6> repeat { 7. print(i) 8. i++ 9. } while (i < 2) 2 10>
複合型
配列
1> var a:[Int] = [1, 2, 3] a: [Int] = 3 values { [0] = 1 [1] = 2 [2] = 3 } 2> a[1] $R0: Int = 2 3> a.count $R1: Int = 3 4> a.append(4) 5> a $R2: [Int] = 4 values { [0] = 1 [1] = 2 [2] = 3 [3] = 4 } 6> a.insert(0, atIndex: 0) 7> a $R3: [Int] = 5 values { [0] = 0 [1] = 1 [2] = 2 [3] = 3 [4] = 4 } 8> a.sort({$0 > $1}) $R4: [Int] = 5 values { [0] = 4 [1] = 3 [2] = 2 [3] = 1 [4] = 0 } 9> a.sort({$0 < $1}) $R5: [Int] = 5 values { [0] = 0 [1] = 1 [2] = 2 [3] = 3 [4] = 4 } 10>
辞書
1> var d = ["a":1, "b":2, "c":3] d: [String : Int] = 3 key/value pairs { [0] = { key = "b" value = 2 } [1] = { key = "a" value = 1 } [2] = { key = "c" value = 3 } } 2> d["b"] $R0: Int? = 2 3> d.count $R1: Int = 3 4> for (key, value) in d { 5. print("key: \(key)") 6. print("value: \(value)") 7. } key: b value: 2 key: a value: 1 key: c value: 3
タプル
1> let t = ("a", 1) t: (String, Int) = { 0 = "a" 1 = 1 } 2> var (s, i) = t s: String = "a" i: Int = 1 3>
関数
1> func hello(s:String) { 2. print("Hello " + s) 3. } 4> hello("Swift") Hello Swift 5> 6> func hello2(s:String) -> String { 7. return "Hello \(s)" 8. } 9> print(hello2("Swift")) Hello Swift 10>
まとめ
Swiftの文法は最近流行りの言語と似ており、直感的に書けるため、いまのところは楽しく学習を進めることができている。 以下の2冊の本を読みながら鋭意勉強中なので、このページは随時更新していく。
*1:Objective-Cでも構わないだろうが、これから始める人はおそらくSwiftを選択するだろう
*2:詳細な説明は書籍に任せる