【问题标题】:Error: ArrayBoundsError when using variable错误:使用变量时出现 ArrayBoundsError
【发布时间】:2011-11-08 11:29:40
【问题描述】:

我有一个长度为 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的变量无效?

【问题讨论】:

    标签: arrays d


    【解决方案1】:

    length 在索引/切片表达式中具有特殊含义 - 它与$ 做同样的事情(被索引/切片的数组的长度)。因此,arr[length] 将始终生成 ArrayBoundsError

    注意:length 在 D2 中已弃用,D1 和 D2 都会发出警告(启用警告时):array 'length' hides other 'length' name in outer scope

    【讨论】:

    • 谢谢,我已将 alais gdc='gdc -Wall' 添加到我的 .bashrc 中,以帮助发现这些类型的警告问题。
    • 具有讽刺意味的是,这个错误正是我博客名称的来源。
    • @BCS:我会咬的……你的博客叫什么名字?
    • 好的,我不打算列出它,因为它在我的个人资料中,但是 URL:arrayboundserror.blogspot.com 名称:return Array[$];
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    • 2021-06-03
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    相关资源
    最近更新 更多