solidity 数组学习总结

注意点:

  • solidity不支持删除中间元素,如果需要删除,将最后一个元素赋值给要删除的那个元素的下标,最后删除最后一个元素。如果按照传统的方式删除中间元素,然后将后面的前移,这就需要花费很多的gas。
  • 循环数组的时候,一定要注意数组的长度,如果过长,那么操作的时候gas可能会超过当前区块的gas限制,导致任何人都无法执行这段代码。

删除的事例代码:

function remove(uint index) public { 

uint len = numbers.length;
    if (i == len - 1) {
        numbers.pop();
        break;
    } else {
        numbers[index] = numbers[len - 1]; 
        epoches.pop();
        break;
 } 

T[k] : 元素类型为T,固定⻓度为k的数组

T[] : 元素类型为T,⻓度动态调整

数组通过下标进行访问,序号是从0开始

bytes、string 是一种特殊的数组

bytes是动态分配大小字节的数组,类似于byte[],但是bytes的gas费用更低,bytes和string 都可以用来表达字符串,对任意⻓度的原始字节数据使用bytes,对任意⻓度字符串 (UTF-8)数据使用string。

pop 表示删除最后一个元素

push(x)表示在末尾增加元素 x。

lengh 属性表示数组的长度。

在 Solidity 中,只有 storage 类型有动态数组。memory 类型的数组必须有固定长度,并且不允许使用push()来附加元素

我们以 Solidity 库形式为动态值数组提供代码,我们能提供push()(和pop())同时用于 storage 和 memory 数组。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Solidity中的数组是一种用于存储相同类型数据的数据结构。数组可以是固定大小的,也可以是动态大小的。固定大小的数组在声明时需要指定数组的大小,并且元素的总数不应超过数组的大小。Solidity中的数组是一种用于存储相同类型数据的数据结构。数组可以是固定大小的,也可以是动态大小的。固定大小的数组在声明时需要指定数组的大小,并且元素的总数不应超过数组的大小。而动态数组的大小在声明时没有预定义,随着元素的添加,数组的大小会发生变化,并且在运行时,数组的大小将被确定。Solidity中的数组是一种用于存储相同类型数据的数据结构。数组可以是固定大小的,也可以是动态大小的。固定大小的数组在声明时需要指定数组的大小,并且元素的总数不应超过数组的大小。而动态数组的大小在声明时没有预定义,随着元素的添加,数组的大小会发生变化,并且在运行时,数组的大小将被确定。在Solidity中声明数组时,需要指定元素的数据类型和元素的数量。数组的大小必须是正整数并且数据类型应该是有效的Solidity类型。以下是一些Solidity数组的示例: 1. 固定大小的数组声明:uint myArray; 2. 固定大小的数组初始化:uint myArray = [1, 2, 3, 4, 5]; 3. 动态数组声明:uint[] myArray; 4. 动态数组初始化:uint[] myArray = [1, 2, 3]; 5. 动态数组添加元素:myArray.push(4); 6. 访问数组元素:myArray;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值