数组在所有的语言当中都是一种常见类型。
在Solidity中,可以支持编译期定长数组和变长数组。 和js中很多方法都很相似,但也有区别的地方,注意好!
源码:
pragma solidity ^0.8.7;
contract Array{
uint[] public nums = [1, 2, 3];
uint[3] public numsFixed = [4, 5, 6];
function examples() external {
nums.push(4); //[1, 2, 3, 4]
uint x;
x = nums[1]; //2
nums[2] = 777; //[1, 2, 777, 4]
delete nums[1]; //[1, 0, 777, 4]
// !!!
//这里需要注意 delete数组的某一个下标,并不会改变数组的长度,因为数组是uint类型,所以会变成uint类型的默认值 0 ;
nums.pop();//[1, 0, 777]
uint len;
len = nums.length;
//create array in memory 内存中创建的数组是局部变量,只能定义定长数组
//内存中不能创建动态数组,所以要定义数组的长度,改变长度的方法都不可以使用
uint[] memory a = new uint[](5);
a[1] = 123;
}
function returnArray() external view returns (uint[] memory){
return nums;
}
}