我试图跟踪值的用法,因此将生成所述值和输入(也被包装)的方法包装到一个称为Dataslot的类中。我不知道我会预先包装什么方法和什么值,所以我尝试了多种方式编写此代码,并认为下面的代码可以工作。但是let mutable value = funk unpack似乎并不会导致将funk beeing识别为一个函数,因此解压缩方法似乎是错误的方法,我如何使它起作用?
type Dataslot(funk, input:Dataslot[]) as self =
let mutable reffunk= funk
let refinput=input
let unpack= for inpu in refinput do inpu.Value
let mutable value = funk unpack
let uses= ResizeArray<Dataslot>[]
let get1()=
value
let mutable get0=fun()->get1()
let get2()=
value<-reffunk unpack
get0<-fun()->get1()
value
do for inpu in refinput do inpu.Subscribe(self)
member x.setfunk(fu)=
reffunk<-fu
for u in uses do
u.Changed
member x.setinput(index:int, inp:Dataslot)=
refinput.[index].Unsubscribe(self)
refinput.[index]=inp
refinput.[index].Subscribe(self)
for u in uses do
u.Changed
member x.Value …Run Code Online (Sandbox Code Playgroud)