Old*_*vec 4 inheritance f# nullreferenceexception
有没有办法使下面的代码工作?
open System.Collections.Generic
type Geometry<'t>(child: 't) =
let values = List()
member o.add (v: float) = values.Add v; child
and Line() as self =
inherit Geometry<Line>(self)
member o.length v = o.add v
let line = Line().length(50.0)
Run Code Online (Sandbox Code Playgroud)
我明白了
System.NullReferenceException:未将对象引用设置为对象的实例.
编辑:
调用以下内容就足以触发异常.
let line = Line()
Run Code Online (Sandbox Code Playgroud)
动机是你可以做到:
let line = Line().x1(10).y1(20).x2(30).y2(10).color("blue") // ...
Run Code Online (Sandbox Code Playgroud)
你可以在所有几何中重复使用普通成员(圆形,椭圆形......)
小智 5
open System.Collections.Generic
type Geometry<'t when 't :> Geometry<'t>>() =
let values = List()
member o.add (v: float) = values.Add v; o :?> 't
and Line() =
inherit Geometry<Line>()
member o.length v = o.add v
let line = Line().length(50.0)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
211 次 |
| 最近记录: |