美文网首页区块链学习笔记
3.2 solidity 类型讲解

3.2 solidity 类型讲解

作者: 9c0ddf06559c | 来源:发表于2018-09-26 19:40 被阅读10次

    3.2 solidity 类型讲解

    https://solidity.readthedocs.io/en/v0.4.23/types.html

    solidity 是静态语言,他的类型分为两类:值类型和引用类型

    • 值类型

    image.png
    • 其中整型包括uint8,uint32,uint64,uint256,uint 五种类型,代表不同的位数,uint和uint256 都是256位
    • 在c和c++里面,字符串常量通常最后都会有个\0结尾符,在solidity中没有
    • 十六进制常量以hex开头,如hex"abcd",并且16进制常量可以转换成字节和字节数组,每两位为一个字节
    function testHexLiterals() public constant returns(bytes2,bytes1,bytes1){
    bytes2 a = hex"abcd"
    return [a,a[0],a[1]]
    }
    
    • 地址类型 address 表示一个账户地址(20字节)如Ox72ba7d8e73fe8eb666ea66ba bc8116a41 bfb1Oe2 ,他最重要的两个成员是属性banlance标示一个账户的余额和transfer() 方法用于转账操作。

    • 验证一个合法定制的方法:https://github.com/ethereum/EIPs/blob/master/EIPS/eip-55.md

    • 引用类型

    • 数据位置(Data location)

    引用类型比较复杂,因此在使用的时候,我们要考虑到占用空间的问题。通常他的空间要占用到256位。在拷贝的时候,开销很大。因此我们在拷贝的时候要考虑到数据存储位置的问题。一般有两种存储位置storage(永久存储在区块链中)和 memory(存储在函数调用的临时内存空间中)
    数据的存储和计算都是需要花费gas的,storage的开销要远大于memory。

    • 数组类型(Arrays)


      image.png
    • 数组一般有两个成员: 属性length和push() 像数组中添加新元素
    // 声明一个定长的memory类型的数组
    uint[] memory a = new uint[16];
    
    • 结构体(struts)
    Funder funder;
    function newFunder() public {
    funder = Funder({addr:msg.sender,amount:10});
    }
    
    • 映射(Mappings)
    • key-value的键值对,可以理解为一个hash表
    • 没有长度,也没有键集合、值集合这样的概念
    • 映射只能作为状态变量,在函数中通常用状态变量作为storage类型的引用

    相关文章

      网友评论

        本文标题:3.2 solidity 类型讲解

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