`
tomqyp
  • 浏览: 26420 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

笔记 关于D关联数组可能遇到的一个陷阱

阅读更多

关于D关联数组可能遇到的一个陷阱
 
前两天想当然的写了类似如下代码:
int[X] n;
n[x] = n.length;
按C的计算顺序此时n[x]的值应该是n的长度。
 
可是在D中,如果x不存在于n中,此时n的长度为n.length+1,即在先在n中插入一个新对象,再设置对象的值。
在D还没有用的很顺手的调试器的情况下,写出这样的代码仅靠单元测试很难找出bug的位置的,所以应该注意避免写出这样的代码。
分享到:
评论
3 楼 lifc 2010-02-08  
有点push sp和i=i++的味道,不久之前刚犯过一个类似的错误:保存线程上下文做迁移时push esp,认为存入的是改变之前的数值(对8086的印象太深了),后来用qemu虚拟机调试才发现问题:)
2 楼 tomqyp 2010-01-31  
以前都是存在电脑上,后来一想放在圈子里也许还能方便别人就干脆贴上来了
1 楼 hqs7636 2010-01-30  
不错,谢谢

相关推荐

    PHP第一部分学习笔记

    有索引数组、关联数组和多维数组等不同类型,它们在处理批量数据或存储具有关系的数据时非常有用。 "初学PHP的基本脉络.doc"可能概述了学习PHP的总体路径,包括基础语法、变量、运算符、流程控制(如条件语句和循环...

    C语言缺陷与陷阱(笔记)

    ### C语言缺陷与陷阱知识点详解 #### 一、引言 C语言因其高效性和灵活性而备受推崇,然而这种强大伴随着不少陷阱与缺陷。对于初学者乃至经验丰富的开发者来说,理解和规避这些问题至关重要。本文将深入探讨C语言中...

    Go 学习笔记——雨痕

    Go语言,又称Golang,是一种静态类型的编程语言,由Google开发,于2007年首次对外公布,并在2009年进行了...通过本学习笔记的内容,我们可以对Go语言有一个全面而系统的认识,为深入学习和应用Go语言打下坚实的基础。

    go笔记第三版

    - **关联**: 一组方法可以关联到一个类型上。 - **继承**: 如果一个类型嵌入了另一个类型,则可以继承其方法集。 #### 5.4 表达式 - **使用场景**: 结构体方法可以作为表达式的一部分。 - **示例**: 调用结构体的...

    Go学习笔记

    Go是一种静态类型语言,这意味着一旦变量被声明并赋予一个特定的数据类型,其类型就不能在运行时发生改变。在Go中,可以使用`var`关键字来声明变量,并且可以为它们指定初始值或让编译器自动推断类型。 #### 示例 `...

    精心整理shell脚本100例(最新版).zip

    - **管道**:`|`将一个命令的输出作为另一个命令的输入。 6. **文件处理** - **文件测试操作符**:如`-f`、`-d`用于检查文件或目录的存在状态。 - **读取文件内容**:`cat`、`less`、`more`。 - **文件处理函数...

    Go 学习笔记 第四版

    - **方法集**:对于特定类型的每个接收者,都会有一个与其关联的方法集。 - 示例: ```go type Shape interface { Area() float64 } func (r Rectangle) Area() float64 { return float64(r.Width * r....

    Effective.STL中文.rar

    3. **vector和string**:`vector`是一个动态数组,可以方便地进行元素的增删改查。`string`是字符的容器,它不仅提供了数组的操作,还支持字符串的常见操作,如拼接、查找、替换等。 4. **关联容器**:`set`和`map`...

    02_[removed]火箭队的奥拉斯·德·JS

    文件名“02_javaScript-master”可能暗示这是一个关于JavaScript的学习资源,可能包含多个章节或部分,"02"可能表示系列的第二部分,"master"可能代表主分支或完整的资料集合。这个压缩包可能包含源代码示例、练习、...

Global site tag (gtag.js) - Google Analytics