この記事では「The Swift Programming Language」を1から読んだ感想とか発見を書いてみようと思います。
「The Swift Programming Language」とはSwiftの公式ドキュメントでiBooksや下ページで見る事ができます。
The Swift Programming Language (Swift 2.1): About Swift
読んだ所
今回はBasic Operators
という項目を読みました。
The Swift Programming Language (Swift 2.1): Basic Operators
発見・感想
代入演算子
if a = b
はエラーを吐くようにしたと書いてあったので確かめてみました。
if a == b
の打ち間違いを防ぐ為のようです。
実際に下コードはエラー。
() is not convertible to BooleanType
と言うエラーになりました。
var a = 1 let b = 1 if a = b {}
「Boolean同士の代入ならエラーにならない?」と思い下のコードを実行してみました。
しかし結果は先ほど同様に() is not convertible to BooleanType
と言うエラー。
var a = true let b = true if a = b {}
試しに代入演算子の型を調べところ 空のTupleのようなものが返ってきていました。
なにはともあれif a = b {}
という形は使えなくなっているようです。
print((a = b).dynamicType) // → ()
余りを求める
余りを求める計算は下のようになりました。
マイナスの余りを求める場合の結果はマイナスになるようです。
あと小数点もいけました。
print(5 % 3) // → 2 print(1 % 3) // → 1 print(-1 % 3) // → -1 print(7 % -5) // → 2 print(1.1 % 3.1) // → 1.1 print(-3.1 % 3) // → -0.1
if文の条件式
先程も少し触れたのですが、if文の条件式にはBool以外を入れることができないようです。
if a {}
とif a != nil {}
のどちらがいいかの議論が不要なのが良いと思いました。
let value = 1 if value {} // これはエラー
Range演算子
Swiftではfor文を下のように書けます。
for i in 0...2 { print(i) // 2を含む } for i in 0..<2 { print(i) // 2を含まない }
0...2
はRangeという構造体になるようです。
print((0...2).dynamicType) // Range<Int>
実際に動かした所、下の2つは同じ結果になりました。
for i in 0...2 { print(i) } for i in Range(start: 0, end: 3) { print(i) }