この記事では「The Swift Programming Language」を1から読んだ感想とか発見を書いてみようと思います。
「The Swift Programming Language」とはSwiftの公式ドキュメントでiBooksや下ページで見る事ができます。
The Swift Programming Language (Swift 2.1): About Swift
読んだ所
今回はAdvanced Operators
という項目を読みました。
The Swift Programming Language (Swift 2.1): Advanced Operators
学んだこと
ビット演算子
オーバーフロー演算子
Swiftではオーバーフローになる演算はコンパイルエラーが起きますが、&+を使うとエラーが起きません。
let value = UInt8.max &+ 1 // UInt8.max + 1はエラー print(value) // → 0
&-や&*もあるようです。
演算子を作る
+メソッドを定義すればカスタムクラスの加算を+で行う事ができます。
class MyClass {} func +(value1: MyClass, value2: MyClass) -> MyClass { return MyClass() } let myClass = MyClass() + MyClass()
先頭や末尾に演算子を付ける場合はprefix/postfix修飾子が必要です。
prefix func ++(value1: MyClass) {} ++MyClass() postfix func ++(value1: MyClass) {} MyClass()++
独自の演算子を使うためにはoperator修飾子で演算子を定義する必要があります。
+のような2項の演算子ならinfixを使い、先頭や末尾に付く演算子にはprefix/postfix修飾子を使います。
infix operator +++ {} func +++(value1: MyClass, value2: MyClass) -> MyClass { return MyClass() } let myClass = MyClass() +++ MyClass()