美文网首页区块链学习笔记
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