代码理解记录1
1 | uint id = zombies.push(Zombie(_name, _dna)) - 1; |
错误理解:
仅记录加入数组的僵尸的下标
正确理解:
1. 创建一个 Zombie
结构体实例
1 | Zombie(_name, _dna) |
这是对 Zombie
结构体的构造(只是内存中的一个临时对象)。
2. 调用 zombies.push(...)
将它加入数组
1 | zombies.push(...) |
push
会把这个新的僵尸放入 zombies
动态数组中,并且返回当前数组的新长度。
3. 计算该僵尸的下标(ID)
因为 push
返回的是「数组新长度」,所以减 1 就是索引:
1 | uint id = ... - 1; |
该代码等价于:
1 | zombies.push(Zombie(_name, _dna)); // 加入数组 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 EIGHTJIU!
评论