错误:使用变量时出现 ArrayBoundsError

发布于 2024-12-14 07:59:35 字数 313 浏览 0 评论 0原文

我有一个长度为 1 的静态大小数组,我尝试在索引 0 处分配一个值。

void main() {
   int length = 0;
   int[1] arr;

   arr[0] = 1;
   arr[length] = 2;
}

使用上面的代码,我得到一个运行时错误,

Error: ArrayBoundsError array.d(6)

该错误对应于以下行:arr[length] = 2。

为什么常量 0 起作用,但是值为 0 的变量不起作用?

I have a static size array of length 1, which I try to assign a value at index 0.

void main() {
   int length = 0;
   int[1] arr;

   arr[0] = 1;
   arr[length] = 2;
}

With the above code, I get a runtime error of

Error: ArrayBoundsError array.d(6)

which cooresponds the line: arr[length] = 2.

Why does the constant 0 work, but the variable with value 0 not work?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一花一树开 2024-12-21 07:59:35

length 在索引/切片表达式中具有特殊含义 - 它与 $ 执行相同的操作(被索引/切片的数组的长度)。因此,arr[length] 总是会导致 ArrayBoundsError 。

注意:length 在 D2 中已弃用,D1 和 D2 都会发出警告(启用警告时):数组“length”隐藏外部作用域中的其他“length”名称

length has a special meaning inside index/slice expressions - it does the same thing as $ (the length of the array being indexed/sliced). Thus, arr[length] will always result in an ArrayBoundsError.

Note: length is deprecated in D2, and both D1 and D2 will issue a warning (when warnings are enabled): array 'length' hides other 'length' name in outer scope.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文