Solidity极简入门|第六讲:映射类型 mapping

22-06-19 15:55
阅读本文需 4 分钟
总结 AI 总结
看总结 收起
原文标题:《Solidity 极简入门: 6. 映射类型 mapping》
原文作者:0xAA


我最近在重新学 solidity,巩固一下细节,也写一个「Solidity 极简入门」,供小白们使用(编程大佬可以另找教程),每周更新 1-3 讲。


所有代码开源在 github :github.com/AmazingAng/WTFSolidity


这一讲,我们将介绍 solidity 中的哈希表:映射(Mapping)类型。


映射 Mapping


在映射中,人们可以通过键(Key)来查询对应的值(Value),比如:通过一个人的 id 来查询他的钱包地址。


声明映射的格式为 mapping(_KeyType => _ValueType),其中 _KeyType 和 _ValueType 分别是 Key 和 Value 的变量类型。例子:



映射的规则


规则 1:映射的 _KeyType 只能选择 solidity 默认的类型,比如 uint,address 等,不能用自定义的结构体。而 _ValueType 可以使用自定义的类型。下面这个例子会报错,因为 _KeyType 使用了我们自定义的结构体:



规则 2:映射的存储位置必须是 storage,因此可以用于合约的状态变量,函数中的 stoage 变量。不能用于 public 函数的参数或返回结果中。


规则 3:如果映射声明为 public,那么 solidity 会自动给你创建一个 getter 函数,可以通过 Key 来查询对应的 Value。


规则 4:给映射新增的键值对的语法为 _Var[_Key] = _Value ,其中 _Var 是映射变量名,_Key 和 _Value 对应新增的键值对。例子:



总结


这一讲,我们介绍了 solidity 中哈希表——映射(Mapping)的用法。至此,我们已经学习了所有常用变量种类,之后我们会学习控制流 if-else, while 等。


原文链接


欢迎加入律动 BlockBeats 官方社群:

Telegram 订阅群:https://t.me/theblockbeats

Telegram 交流群:https://t.me/BlockBeats_App

Twitter 官方账号:https://twitter.com/BlockBeatsAsia

举报 纠错/举报
选择文库
新增文库
取消
完成
新增文库
仅自己可见
公开
保存
纠错/举报
提交