Solidity数组是一种数据布局,可以存储沟通数据范例的元素的有序荟萃。数组中的每个元素都有一个称为索引的特定位置,可以通过索引来会见或修改元素。数组可以用来存储数字、布尔值、地点或字符串等根基数据范例。在Solidity中,数组可以是牢靠巨细或动态巨细的。牢靠巨细的数组在声明时必需指定元素的数量,而动态巨细的数组可以按照需要增加或淘汰元素。数组在内存中占用持续的空间,最低索引对应第一个元素,,最高索引对应最后一个元素。
声明和初始化数组
在Solidity中,声明一个数组时,需要指定元素的数据范例和数组的巨细(可选)。假如是牢靠巨细的数组,那么巨细必需是一个正整数;假如是动态巨细的数组,那么可以省略巨细,可能用空括号暗示。声明一个数组时,也可以给它赋予初始值,初始值必需是一个与数组数据范例沟通的常量表达式或字面量。
语法:
<数据范例> <数组名> [巨细] = <初始值>;
譬喻:
uint5 a = [1, 2, 3, 4, 5]; // 声明并初始化一个牢靠巨细为5的uint范例的数组 bool[] b = [true, false, true]; // 声明并初始化一个动态巨细为3的bool范例的数组 address[] c; // 声明一个动态巨细为0的address范例的数组 string2 d = [“Hello”, “World”]; // 声明并初始化一个牢靠巨细为2的string范例的数组
会见和修改数组元素
可以通过索引来会见或修改数组中的元素。索引从0开始,到数组长度减1竣事。假如会见或修改超出范畴的索引,会导致异常。假如是动态巨细的数组,可以通过push要领向末端添加新元素,可能通过pop要领删除末端的元素。假如是牢靠巨细的数组,则不能利用push或pop要领。
譬喻:
uint5 a = [1, 2, 3, 4, 5]; a[0] = 10; // 修改第一个元素为10 uint x = a4; // 获取最后一个元素,赋值给x // a5 = 6; // 异常,索引越界
bool[] b = [true, false, true]; b.push(false); // 向末端添加新元素false b.pop(); // 删除末端的元素 // b3 = true; // 异常,索引越界
获取和修改数组长度
可以通过length属性来获取或修改数组的长度。假如是牢靠巨细的数组,那么length属性是只读的;假如是动态巨细的数组,那么length属性是可写的。假如增加length属性的值,会在末端添加默认值;假如淘汰length属性的值,会删除末端的元素。
譬喻:
uint5 a = [1, 2, 3, 4, 5]; uint l = a.length; // 获取长度,赋值给l // a.length = 6; // 异常,不能修改牢靠巨细数组的长度
bool[] b = [true, false, true]; b.length = 5; // 修改长度为5,在末端添加两个false b.length = 2; // 修改长度为2,删除末端三个元素
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。