Arrays 精灵&x27;s常规阵列数据字段

Arrays 精灵&x27;s常规阵列数据字段,arrays,generics,genie,datafield,Arrays,Generics,Genie,Datafield,我有一个int的一般数组 [indent=4] init var a = new GenericArray of int for var i = 1 to 3 do a.add (i) say: Func of int = def (v) stdout.printf ("%d ", v) var end = a.length - 1 这些都输出1 2 3 for var i = 0 to end do stdout.printf ("%d "

我有一个int的一般数组

[indent=4]

init
    var a = new GenericArray of int
    for var i = 1 to 3 do a.add (i)
    say: Func of int = def (v)
        stdout.printf ("%d ", v)

    var end = a.length - 1
这些都输出1 2 3

for var i = 0 to end do stdout.printf ("%d ", a[i])
for var i = 0 to end do stdout.printf ("%d ", a.data[i])
a.foreach (say)
for val in a.data do stdout.printf ("%d ", val)
for val in a.data do stdout.printf ("%d ", val)
但是这个输出是102

为什么输出不是1 2 3

for var i = 0 to end do stdout.printf ("%d ", a[i])
for var i = 0 to end do stdout.printf ("%d ", a.data[i])
a.foreach (say)
for val in a.data do stdout.printf ("%d ", val)
for val in a.data do stdout.printf ("%d ", val)
如果我设置数据字段:

var a = new GenericArray of int
a.data = {1, 2, 3}
下面:它将输出1 2 3

for var i = 0 to end do stdout.printf ("%d ", a[i])
for var i = 0 to end do stdout.printf ("%d ", a.data[i])
a.foreach (say)
for val in a.data do stdout.printf ("%d ", val)
for val in a.data do stdout.printf ("%d ", val)
一切都好吗

但是这些都输出1 3 0

for var i = 0 to end do stdout.printf ("%d ", a[i])
for var i = 0 to end do stdout.printf ("%d ", a.data[i])
a.foreach (say)

为什么它的行为如此奇怪?

我可以确认部分结果,但必须对代码进行一些修改。首先,我使用语法分别定义了函数say():
defsay(v:int)stdout.printf(“%d”,v)
。我在教程中找不到您使用的语法(比如:Func of int…)。事实上,最后三行代码实际上输出了1 3 0,但没有输出1 0 2。事实上,for循环的其余部分给了我123。也许问题中有一行代码你忘了复制?可能是通向102的那个?嗨!,在第一个示例中:这一行输出1 0 2
对于a.data do stdout.printf中的val(“%d”,val)
我可以确认部分结果,但必须对代码进行一些修改。首先,我使用语法分别定义了函数say():
defsay(v:int)stdout.printf(“%d”,v)
。我在教程中找不到您使用的语法(比如:Func of int…)。事实上,最后三行代码实际上输出了1 3 0,但没有输出1 0 2。事实上,for循环的其余部分给了我123。也许问题中有一行代码你忘了复制?可能是通向102的那个?嗨!,在第一个示例中:这一行输出1 0 2<代码>用于a.data do stdout.printf中的val(“%d”,val)