Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建一个继承F#中接口的抽象类?_F# - Fatal编程技术网

如何创建一个继承F#中接口的抽象类?

如何创建一个继承F#中接口的抽象类?,f#,F#,我有以下带有接口和抽象类的代码 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> op

我有以下带有接口和抽象类的代码

    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
类型索引节点
抽象成员评估:单位->'a
抽象成员克隆:INode

抽象成员SelectRandom:int->INode您可以在类型上定义抽象成员,然后提供指向这些抽象成员的实现。例如:

[]
类型终端节点
抽象成员评估:单位->'a
抽象成员克隆:INode

接口INode您可以定义类型上的抽象成员,然后提供指向这些抽象成员的实现。例如:

[]
类型终端节点
抽象成员评估:单位->'a
抽象成员克隆:INode
接口节点