使用.length
动态数组的属性时,为什么在我使用后返回不正确数量的元素appender
?
如果我使用~=
语法,它会返回正确的长度。
代码:
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);
}
我正在阅读这篇文章,我认为相关部分指出:
这样做的另一个后果是长度不是数组属性,而是切片属性。这意味着长度字段不一定是数组的长度,它是切片的长度。这可能会使该语言的新手感到困惑。
然而,这是指切片和动态数组。
根据文档 appender.data
返回一个托管数组。所以获取元素个数的正确方法是调用.length
返回的数组。
更正的代码:
int [] managedArray = appendNumber.data;
writeln(managedArray.length);
或者
writeln(appendNumber.data.length);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句