使用 .length returns 不正确的元素数量

Using .length returns incorrect number of elements

当使用动态数组的 .length 属性 为什么 return 元素数量不正确 我使用 appender?

如果我使用 ~= 语法,它 return 是正确的长度。

代码:

import std.stdio;
import std.array : appender;

void main()
{
    //declaring a dynamic array
    int [] arrayofNumbers;
    //append an element using the ~= syntax
    arrayofNumbers ~= 1;
    arrayofNumbers ~= 2;
    //print the array
    writeln(arrayofNumbers);

    //Using appender
    auto appendNumber = appender(arrayofNumbers);
    appendNumber.put(10);
    writeln(appendNumber.data);

    writeln(arrayofNumbers.length);

}

我正在阅读此 article,我认为相关部分指出:

Another consequence of this is that the length is not an array property, it's a slice property. This means the length field is not necessarily the length of the array, it's the length of the slice. This can be confusing to newcomers to the language.

然而,这是指切片和动态数组。

根据documentationappender.datareturns一个托管数组。所以获取元素数量的正确方法是在返回的数组上调用.length

更正后的代码:

int [] managedArray = appendNumber.data;
writeln(managedArray.length);

writeln(appendNumber.data.length);