F#でインターフェイスを継承する抽象クラスを作成するにはどうすればよいですか?

ozgur

インターフェイスと抽象クラスを備えた次のコードがあります。

    type INode<'a> =
    abstract member Parent:INode<'a>
    abstract member Evaluate:unit->'a
    abstract member Clone:INode<'a> -> INode<'a>
    abstract member SelectRandom:int->INode<'a> option

[<AbstractClass>]
type TerminalNode<'a>() =
    interface INode<'a> with
        member this.SelectRandom indexOfCurrentNode = 
            let p = 1.0 / float indexOfCurrentNode
            if Random().NextDouble() < p then Some (this:>INode<'a>) else None

これに階層を実装したいのですノード階層クラス図が、コンパイラはインターフェイスのすべてのメソッドを実装する必要があると文句を言います。

インターフェイスを実装し、そのインターフェイスの1つのメソッドを実装して他のメソッドを抽象化するAbstractクラスを作成する正しい方法は何ですか?

注:画像が表示されない場合は、ネットワークがimgur.comをブロックしています。

チャドギルバート

型に抽象メンバーを定義してから、それらの抽象メンバーを指す実装を提供できます。例えば:

[<AbstractClass>]
type TerminalNode<'a>() as self =
    abstract member Parent : INode<'a>
    abstract member Evaluate : unit->'a
    abstract member Clone:INode<'a> -> INode<'a>
    interface INode<'a> with
        member this.Parent = self.Parent
        member this.Evaluate () = self.Evaluate ()
        member this.Clone a = self.Clone a
        member this.SelectRandom indexOfCurrentNode = 
            ...

(注意as selftypeは、変数名によって抽象型を参照することができますラインを、self

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

クラスにインターフェイスを実装し、別のクラスから継承させるにはどうすればよいですか?

分類Dev

作成ロジックを指定するインターフェイスまたは抽象クラスを作成するにはどうすればよいですか?

分類Dev

抽象クラスのインスタンスを作成するにはどうすればよいですか?

分類Dev

継承されるデータクラスにオプションのフィールドを作成するにはどうすればよいですか?

分類Dev

その抽象クラスのサブクラスではないインターフェイス実装者をそのインターフェイスの抽象クラスのように動作させるにはどうすればよいですか?

分類Dev

F#でジェネリックC#タイプのインスタンスを作成するにはどうすればよいですか?

分類Dev

F#でジェネリック型をランタイムインスタンス化するにはどうすればよいですか?

分類Dev

C ++でDirectWrite継承インターフェイスにアクセスするにはどうすればよいですか?

分類Dev

このJavaインターフェースと継承構造をGolangに変換するにはどうすればよいですか?

分類Dev

PHPの抽象クラスからインターフェースの名前を取得するにはどうすればよいですか?

分類Dev

Kotlinで、列挙型クラスがインターフェイスを実装するときに、継承された宣言の衝突を回避するにはどうすればよいですか?

分類Dev

変更できないクラスを作成してインターフェイスを実装するにはどうすればよいですか?

分類Dev

この例では、同じインターフェイスから継承するさまざまなオブジェクトをジェネリック型で1つの変数に格納するにはどうすればよいですか?

分類Dev

typescriptでシンボルインデックスを取得するインターフェイスを作成するにはどうすればよいですか?

分類Dev

guiceファクトリ支援インジェクトを使用して作成され、抽象クラスから拡張されたクラスのインスタンスを作成するにはどうすればよいですか?

分類Dev

wxpythonインターフェースの優れたコンストラクターを作成するにはどうすればよいですか?

分類Dev

異なるクラスに対して1つのインターフェイス実装を作成するにはどうすればよいですか?

分類Dev

Page <>インターフェイスのDTOを作成するにはどうすればよいですか?

分類Dev

インターフェイスの匿名実装を作成するにはどうすればよいですか?

分類Dev

継承を無視して、クラスが特定のタイプであるかどうかを確認するにはどうすればよいですか?

分類Dev

SWIGのインターフェースを満たすPythonクラスを作成するにはどうすればよいですか?

分類Dev

SWIGのインターフェースを満たすPythonクラスを作成するにはどうすればよいですか?

分類Dev

特定の属性のみを継承するオブジェクトのエイリアスを作成するにはどうすればよいですか

分類Dev

@abstractmethodを使用して、コンストラクターの引数構造を指定する抽象インターフェースを作成するにはどうすればよいですか?

分類Dev

JSON形式のインターフェースを作成するにはどうすればよいですか?

分類Dev

継承可能なクラス変数を作成するにはどうすればよいですか?

分類Dev

クラスがインターフェイスから継承されている場合、List <Interface>オブジェクトのプロパティにアクセスするにはどうすればよいですか?

分類Dev

Unity のインターフェイスから継承するインターフェイスを登録するにはどうすればよいですか

分類Dev

プライベートコンストラクターを持つクラスがこのクラスからの継承を妨げないのはなぜですか?特定のベースから継承できるクラスを制御するにはどうすればよいですか?

Related 関連記事

  1. 1

    クラスにインターフェイスを実装し、別のクラスから継承させるにはどうすればよいですか?

  2. 2

    作成ロジックを指定するインターフェイスまたは抽象クラスを作成するにはどうすればよいですか?

  3. 3

    抽象クラスのインスタンスを作成するにはどうすればよいですか?

  4. 4

    継承されるデータクラスにオプションのフィールドを作成するにはどうすればよいですか?

  5. 5

    その抽象クラスのサブクラスではないインターフェイス実装者をそのインターフェイスの抽象クラスのように動作させるにはどうすればよいですか?

  6. 6

    F#でジェネリックC#タイプのインスタンスを作成するにはどうすればよいですか?

  7. 7

    F#でジェネリック型をランタイムインスタンス化するにはどうすればよいですか?

  8. 8

    C ++でDirectWrite継承インターフェイスにアクセスするにはどうすればよいですか?

  9. 9

    このJavaインターフェースと継承構造をGolangに変換するにはどうすればよいですか?

  10. 10

    PHPの抽象クラスからインターフェースの名前を取得するにはどうすればよいですか?

  11. 11

    Kotlinで、列挙型クラスがインターフェイスを実装するときに、継承された宣言の衝突を回避するにはどうすればよいですか?

  12. 12

    変更できないクラスを作成してインターフェイスを実装するにはどうすればよいですか?

  13. 13

    この例では、同じインターフェイスから継承するさまざまなオブジェクトをジェネリック型で1つの変数に格納するにはどうすればよいですか?

  14. 14

    typescriptでシンボルインデックスを取得するインターフェイスを作成するにはどうすればよいですか?

  15. 15

    guiceファクトリ支援インジェクトを使用して作成され、抽象クラスから拡張されたクラスのインスタンスを作成するにはどうすればよいですか?

  16. 16

    wxpythonインターフェースの優れたコンストラクターを作成するにはどうすればよいですか?

  17. 17

    異なるクラスに対して1つのインターフェイス実装を作成するにはどうすればよいですか?

  18. 18

    Page <>インターフェイスのDTOを作成するにはどうすればよいですか?

  19. 19

    インターフェイスの匿名実装を作成するにはどうすればよいですか?

  20. 20

    継承を無視して、クラスが特定のタイプであるかどうかを確認するにはどうすればよいですか?

  21. 21

    SWIGのインターフェースを満たすPythonクラスを作成するにはどうすればよいですか?

  22. 22

    SWIGのインターフェースを満たすPythonクラスを作成するにはどうすればよいですか?

  23. 23

    特定の属性のみを継承するオブジェクトのエイリアスを作成するにはどうすればよいですか

  24. 24

    @abstractmethodを使用して、コンストラクターの引数構造を指定する抽象インターフェースを作成するにはどうすればよいですか?

  25. 25

    JSON形式のインターフェースを作成するにはどうすればよいですか?

  26. 26

    継承可能なクラス変数を作成するにはどうすればよいですか?

  27. 27

    クラスがインターフェイスから継承されている場合、List <Interface>オブジェクトのプロパティにアクセスするにはどうすればよいですか?

  28. 28

    Unity のインターフェイスから継承するインターフェイスを登録するにはどうすればよいですか

  29. 29

    プライベートコンストラクターを持つクラスがこのクラスからの継承を妨げないのはなぜですか?特定のベースから継承できるクラスを制御するにはどうすればよいですか?

ホットタグ

アーカイブ