iBooks にある “The Swift Programming Language” の勉強メモ。Objective-C と C を普段書いている自分から、ちょっと馴染みがないものを特にまとめておきます。目次は こちら。
今回は、オペレーターに関して。
Basic Operators
1. 代入オペレーター(=)の返り値
Swift では、条件で assignment を間違って使用してしまうことをふせぐため、assignment (=) では、値を返さない。なので、このコードはエラー。このおかげで、等価比較 (==) をしようとしたが、= をひとつだけ打ってしまうようなエラーをコンパイル時に見つけることができる。
1 2 3 4 5 6 | let x = 1 let y = 2 if x = y { // Compilation error } |
2. Remainder
% は余りを返すオペレーターですね。Swift では、浮動小数点に対しても使用することができます。
1 2 3 4 5 6 7 | var a = 10 var b = 3 a % 3 // 1 var a_f = 11.1 var b_f = 1.1 a_f % b_f // 0.1 |
3. === と !==
通常のロジカルオペレーターに加えて、同一のオブジェクトへの参照かどうかを判定するオペレーターがある。通常の == / != は値を比較するが、=== / !== は同じオブジェクトかどうかの参照自体の比較をする。
1 2 3 4 5 6 7 8 9 10 11 | var str1 = "dog" var str2 = String("cat") var str3 = String("cat") var str4 = "bird" var str5 = "bird" str1 == str2 // false str2 == str3 // true str2 === str3 // false str3 === str3 // true str4 === str5 // false str4 === str4 // false |
4. 範囲オペレーター
ループ等で使われる Range Operator というものがある。a…b は、a 以上 b 以下 (b を含む)、a..b は、a 以上 b より下 (b を含まない)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | for i in 0...5 { println(i) } /* Output: 0 1 2 3 4 5 */ for i in 0..5 { println(i) } /* Output: 0 1 2 3 4 */ |