美文网首页
solidity定长数组和动态数组

solidity定长数组和动态数组

作者: 程序新视界 | 来源:发表于2019-08-02 14:37 被阅读0次

固定长度的数组

固定长度数组声明

直接在定义数组的时候声明固定长度数组的值:

uint[5] fixedArr = [1,2,3,4,5];

可通过数组的length属性来获得数组的长度,进而进行遍历操作。

// 通过for循环计算数组值的总和
function sum() public view returns (uint) {
    uint total = 0;
    for(uint i = 0; i < fixedArr.length; i++) {
        total += fixedArr[i];
    }
    return total;
}

固定长度数组无法修改数组长度,否则编译直接会报错:

TypeError: Expression has to be an lvalue.
fixedArr.length = len;

但可对数组中的值进行修改。

function updateValue(uint index,uint value) public {
    fixedArr[index] = value;
}

可变长度数组

可变长度类型数组的声明:

uint[] unfixedArr = [1,2,3,4,5];
// 或
uint[] unfixedArr;

可变长度数组也可通过同样的方法进行遍历求和:

// 通过for循环计算数组值的总和
function sum() public view returns (uint) {
    uint total = 0;
    for(uint i = 0; i < unfixedArr.length; i++) {
        total += unfixedArr[i];
    }
    return total;
}

其中第二种情况未声明数组内容时,可通过直接通过push向数组中添加值,或初始化一个数组然后再赋值。

unfixedArr.push(1);
或
unfixedArr = new uint[](1); 
unfixedArr[0] = 0;

其中第二种方法通过索引进行设置值时,该数组必须先被初始化,否则会抛出异常。

动态数组获取长度方式与静态数组一直,但动态数组可以直接修改数组长度,而不会出现编译不通过的情况。

unfixedArr.length = len;

上面已经可以看到,可以通过push方法向动态数组中添加元素。

原文链接:https://www.choupangxia.com/2019/08/02/solidity%e5%ae%9a%e9%95%bf%e6%95%b0%e7%bb%84%e5%92%8c%e5%8a%a8%e6%80%81%e6%95%b0%e7%bb%84/

相关文章

  • solidity定长数组和动态数组

    固定长度的数组 固定长度数组声明 直接在定义数组的时候声明固定长度数组的值: 可通过数组的length属性来获得数...

  • Solidity的数组特性深入详解(十)| 入门系列

    数组在所有的语言当中都是一种常见类型。在Solidity中,可以支持编译期定长数组和变长数组。一个类型为T,长度为...

  • JavaScript数据结构笔记 - 数组

    静态数组(Static Array)vs 动态数组(Dynamic Array) 静态数组是一个固定长度的数组,内...

  • oracle 数组学习

    oracle数组可以分为定长数组和可变数组。 一、定长数组:create or replace procedur...

  • Scala基础——数组

    定长数组 数组一般包括定长数组和变长数组,在Scala中使用Array进行声明定长数组注意:scalad的索引标示...

  • scala数组

    scala中的数组分为定长数组(Array)和可变长数组(ArrayBuffer) 定长数组(Array):1.声...

  • [智能合约]:类型02 字节数组,字符串和数组

    这一次介绍Solidity的字节数组和数组。字节数组分为固定大小的字节数组,和动态大小的字节数组(字符串归在其中)...

  • Scala-数组、映射

    1、数组1)、创建数组创建定长数组和长度可变数组//创建定长数组,使用new关键字,指定数组泛型为Int,长度为5...

  • scala入门(2)

    3.数组、映射、元组、集合 3.1数组 3.1.1定长数组和变长数组 object ArrayDemo {def ...

  • 说说ArrayList的扩容机制

    ArrayList是List接口的实现类,它是支持根据需要而动态增长的数组。java中标准数组是定长的,在数组被创...

网友评论

      本文标题:solidity定长数组和动态数组

      本文链接:https://www.haomeiwen.com/subject/ijeldctx.html