我有带有接口和抽象类的以下代码。
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
Run Code Online (Sandbox Code Playgroud)
我想在其中实现层次结构
但是编译器抱怨应该实现该接口的所有方法。
创建实现一个接口并实现该接口的一个方法而使其他方法保持抽象的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 =
...
Run Code Online (Sandbox Code Playgroud)
(注意,as self在type线路,它可以让你通过变量名指的是抽象类self)
| 归档时间: |
|
| 查看次数: |
48 次 |
| 最近记录: |