このシリーズでは、F#がオブジェクト指向のクラスとメソッドをどのようにサポートしているかを見ていきます。

オブジェクト指向の機能を使うべきか

これまで何度も強調してきたように、F#は根本的に関数型言語です。しかし、オブジェクト指向の機能がうまく統合されており、後付けの印象はありません。そのため、F#をC#の代替として、純粋にオブジェクト指向言語として使うことも十分可能です。

オブジェクト指向スタイルと関数型スタイルのどちらを使うかは、もちろんあなた次第です。以下に、賛成と反対の理由をいくつか挙げます。

オブジェクト指向の機能を使う理由:

  • リファクタリングせずにC#から直接移植したい場合(これについては、C#からF#への移植に関する完全なシリーズがあります)。
  • F#を主にオブジェクト指向言語として、C#の代替として使いたい場合。
  • 他の.NET言語と統合する必要がある場合。

オブジェクト指向の機能を使わない理由:

  • 命令型言語から来た初心者の場合、クラスが関数型プログラミングの理解を妨げる杖になる可能性があります。
  • クラスには、「純粋な」F#データ型が持つ便利な「すぐに使える」機能(組み込みの等値性と比較、プリティプリントなど)がありません。
  • クラスとメソッドは型推論システムや高階関数とうまく連携しません(ここでの議論を参照)。そのため、これらを多用すると、F#の最も強力な部分を活用しにくくなります。

ほとんどの場合、最良のアプローチはハイブリッド型です。主に純粋なF#の型と関数を使って型推論の利点を活かしつつ、多態性が必要な場合に時々インターフェースとクラスを使います。

F#のオブジェクト指向機能を理解する

F#のオブジェクト指向機能を使うことにした場合、以下の連載が、F#でクラスとメソッドを生産的に使うために知っておくべきことをすべてカバーしています。

まずは、クラスの作り方から始めましょう。

results matching ""

    No results matching ""