我是 F# 新手,我有一个(可能很简单)问题。
下面代码的目的是将序列(字节流)中的值复制到数组myarray_
中,保持数组的大小thesize
,并将其他元素设置为零。
我可以看到在 for 循环中复制的值。但是离开构造函数后,调试器显示myarray_
新构造的对象包含全零!
我正在使用VS2012。谢谢。
编辑:接收者数组的大小总是大于传入序列的大小。
编辑:这个 SomeClass 的对象实际上被实例化为外部类的成员。在这里,以及“SomeClass”中的更多上下文。当主程序调用 OuterClass.Func 时,会创建“cp”对象,并正确填充数组。当代码离开 ctor 时,数组要么包含全零,要么大小为零(参见下面的注释)。
**解决了吗?** :我将“cp”从“member”更改为“let mutable”……它现在似乎可以工作了。不知道为什么。
type SomeClass(thesize, bytestream : seq<byte>) = class
let mutable myarray_ = Array.create<byte> thesize 0uy
do
let mutable idx = 0
for v in bytestream do
myarray_.[idx] <- v
idx <- idx + 1
member x.Func(index) = // consumes myarray_.[index] and neighbor values
type OuterClass(thesize, bytestream) = class
member x.cp : SomeClass = new SomeClass(thesize, bytestream)
member x.Func(index) =
x.cp.Func(index)