iBooks にある “The Swift Programming Language” の勉強メモ。Objective-C と C を普段書いている自分から、ちょっと馴染みがないものを特にまとめておきます。目次は こちら。
まずは、The Basics 章の細々したもの。
The Basics
1. 型セーフ
変数やコンスタントを一度、宣言するともう一度宣言することはできず、異なるタイプのデータを保存することもできない。また、コンスタントを変数へ、変数からコンスタントにもできない。
1 2 | var number = 10 number = "10" // error |
2. 予約語の変数/コンスタントとしての利用
Swift の予約語を変数、コンスタントの名前に使用するしかない状況の時には、名前の周りを ` (back ticks) で囲むことで使用することができる。もちろん、非推奨。
1 2 | var `func` = "test1" println(`func`) |
3. 変数/コンスタントの展開
文字列の中で変数、コンスタントを使用するには、カッコでくくり、最初のカッコをバックスラッシュでエスケープすることにより、Swift が展開してくれる。
1 2 | println("The current value of friendlyWelcome is \(friendlyWelcome)") // prints "The current value of friendlyWelcome is Bonjour!” |
4. コメントのネスト
C では出来なかった /**/ のコメントをネストすることができる。
1 2 | // this comment works well /* hi /* wow */ yeah */ |
5. セミコロン
各ステートメントの終わりにセミコロンはいらない。でも、ステートメントを同じ行に書くときには必須。
1 2 | var number1 = 10; var number2 = 20; println(number1) var number3 = 30, number4 = 40; println(number3) |
6. 浮動小数点数のデフォルトは Double
Swift 型推論をしてくれると同時に型に対して厳格です。上で見たように、一度、Int と宣言した変数に String 等の異なる型を保存することはエラーを吐きます。浮動小数点数の型推論は、明示的になされていなければ、Double です。
1 2 3 4 5 6 | var dNum :Double = 3.14 // Double var fNum :Float = 3.14 // Float dNum = fNum // error var d2Num = 3.14 // Double var f2Num :Float = 3.14 // Float d2Num = f2Num // error |
7. 数字リテラル
数字リテラルにおいて、可読性を高めるために以下のような書き方ができる。
1 2 3 | let padding0Double = 000001234.456 let oneMillion = 1_000_000 let justOverMillion = 1_000_000.000_000_1 |
8. 型変換
変数とコンスタントにおいての、浮動小数点と整数の変換は全て明示的に行う。Type(value) と、Type の initializer が受け取ることができる型の value を使用して、新しいオブジェクトを作成する
1 2 3 4 5 6 7 | // from int to float let three = 3 let point = 0.14159 let pi = three + point // error let pi = Double(three) + point // ok // from float to int let integerPI = Int(pi) |
これは、リテラルとは文脈が違う。下記のコードは ok。なぜならリテラルは型をまだ持っていないから。
1 | let anotherPI = 3 + 0.12159 |
9. Int は、条件として使えない
Swift の型セーフのため、C のように 0 が false でそれ以外が true のように数値を条件分岐の直接使われない。下記のコードはエラー。
1 2 3 4 | let i = 1 if i { // err } |