以太坊技术开发课程08:学习solidity引用类型映射和结构体介绍

Solidity编程语言里,类型中,值类型是最平常不过的了,但是在引用类型中,结构体又非常重要,这承载着关于对象的一些概念,而映射又是一个特殊的存在,此文重点讲解关于solidity中结构体和映射的部分。

Solidity结构体

Solidity提供struct来定义自定义类型,结构体中只包含数据类型不能包含变量和函数。

Solidity映射

映射类型在声明时的形式为 mapping(_KeyType => _ValueType)。 其中 _KeyType 可以是任何基本类型,即可以是任何的内建类型加上bytes and string。 而用户定义的类型或复杂的类型如:合约类型、枚举、映射、结构体、即除bytes and string 之外的数组类型 是不可以作为 _KeyType 的类型的。

映射可以视作 哈希表 ,它们在实际的初始化过程中创建每个可能的 key, 并将其映射到字节形式全是零的值:一个类型的 默认值。然而下面是映射与哈希表不同的地方: 在映射中,实际上并不存储 key,而是存储它的 keccak256 哈希值,从而便于查询实际的值。

正因为如此,映射是没有长度的,也没有 key 的集合或 value 的集合的概念。

映射只能是 存储 的数据位置,因此只允许作为状态变量 或 作为函数内的 存储 引用 或 作为库函数的参数。 它们不能用合约公有函数的参数或返回值。

可以将映射声明为 public,然后来让 Solidity 创建一个 getter 函数。 _KeyType 将成为 getter 的必须参数,并且 getter 会返回 _ValueType。

映射和结构体的代码实例演示:
映射和结构的代码介绍图

 

免责声明:本文由信比特作者原创文章,不构成投资建议,请谨慎对待。

版权声明:信比特作者保留原创权利。文章为作者独立观点,转载请注明出处

原文链接:http://www.bitpoa.com/BlockchainCollege/126.html

生成海报
收藏

相关推荐

0 条评论

微信扫一扫

微信扫一扫

微信扫一扫,分享到朋友圈

以太坊技术开发课程08:学习solidity引用类型映射和结构体介绍