演算子

使わないように!Scalaが演算子を用いたAPI設計をどの程度サポートしているかは別にして,演算子の定義は軽々しく手を出すべきではありません。その演算子が一般的では無い場合(例えば,>>#>>)は特にそうです。 一般的なルールとして,演算子には2つの適切なユースケースがあります。

  • ドメイン特化言語(e.g. actor1 ! Msg
  • 論理的,数学的な演算(e.g. a + bc :: d

前者のケースでは,構文が本当に有益な限りは演算子を使用しても構いません。しかしながら,通常のAPI設計の間は,演算子は純粋関数的な演算に限定して取っておくべきです。従って,>>=演算子を2つのモナドを合成する目的で定義する事は構いませんが,<<演算子をアウトプットストリームに書き出す用途で定義する事は認められません。前者は数学的に明確に定義されていて副作用がありませんが,後者はそのどちらにもあてはまりません。

Scalaでは演算子の定義はその危険性を良く理解した上級者のみが使うような高等な機能として考えられています。注意しないと,過度の演算子オーバーロードは単純極まりないコードをも記号の嵐にしてしまいます。

前のトピックへ

括弧

次のトピックへ

フィールド

このページ

別のフォーマット

貢献