Scala ひと巡り : オペレータ (Operators)

Scala では、ただ 1 つのパラメータをとるどのようなメソッドも中置演算子として使えます。

次は、3 つのメソッド and、or と negate を定義する classMyBool の定義です。

class MyBool(x: Boolean) { def and(that: MyBool): MyBool = if (x) that else this def or(that: MyBool): MyBool = if (x) this else that def negate: MyBool = new MyBool(!x) }

ここで、and と or を中置演算子として使えます。:

def not(x: MyBool) = x negate; // ここではセミコロンが必要 def xor(x: MyBool, y: MyBool) = (x or y) and not(x and y)

このコードの最初の行のように、パラメータなしのメソッドを後置演算子としても使用えます。2 番目の行は、新しい not 関数と同様に、and および or メソッドを使って xor 関数を定義します。この例で、中置演算子を使って xor 定義がいっそう理解しやすくなっています。

次は、より伝統的なオブジェクト指向プログラミング言語構文における、対応するコードです:

def not(x: MyBool) = x.negate; // semicolon required here def xor(x: MyBool, y: MyBool) = x.or(y).and(x.and(y).negate)