Menu
CoddyTech

存储数组

本课属于 Coddy Solidity 学习旅程的“基础知识”单元。第 38 课,共 53 课。

在合约作用域声明的动态数组会存储在存储区中。使用 push(value) 追加元素,使用 pop() 删除最后一个元素。对空数组调用 pop 会回滚。追加或删除值时,数组的长度会发生变化。

在合约作用域声明这个数组:

uint256[] values;

在提供的 main 函数中使用它:

values.push(6);
values.push(15);
values.pop();
console.log(values.length);
console.log(values[0]);

在这个测试中,数组一开始是空的。两次 push 会创建两个元素,pop 会移除第二个元素。第一个元素仍然是 6。更新存储数组会改变合约状态,因此 main 不能是 view。

push 和 pop 会在动态存储数组的末尾对其进行修改。

challenge icon

挑战

简单

声明一个名为 values 的动态 uint256 存储数组。依次推入 a、b 和 c,移除最后一个元素,然后打印长度和剩余的最后一个值。

测试按以下顺序向 main 传递参数:uint256 a、uint256 b、uint256 c。每个测试都从全新的合约状态开始。

使用 console.log 输出要求的内容。只打印要求的值,每行一个,除非任务另有说明,否则不要添加额外标签。

亲手试试

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import "forge-std/console.sol";
contract Main {
    function main(uint256 a, uint256 b, uint256 c) external  {
        // 在这里写下你的答案。
    }
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: Solidity 在线编辑器