しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

Swift再入門26 − The Swift Programming Languageを読んでみる

この記事では「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は他言語と同様にビット演算子を備えています。

オーバーフロー演算子

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()