solidity吧 关注:130贴子:167
  • 4回复贴,共1

solidity的映射类型mapping

只看楼主收藏回复

本文内容一共包括三个部分:
1.映射类型是什么?
2.映射类型如何定义和访问
3.mapping的局限性
4.写代码来练习一下吧


IP属地:广东1楼2023-08-24 22:31回复
    1.映射类型是什么 映射类型和PHP的数组比较像是一直key-value的关系,不同之处是映射类型mapping,定义好映射关系后key和value的数据类型都是固定不能变。mapping在合约中通常用于存储数据,例如存储用户地址和其代币余额,又或者是存储用户地址和其等级。


    IP属地:广东3楼2023-08-24 22:47
    回复
      2.映射类型如何定义和访问 映射类型通过mapping字段定义,其key的类型不能是变长数组、合约类型、嵌套类型,value类型则无限制。 mapping可以通过合约地址访问,例如 balance[userAddr] ,注意如果通过一个不存在的key去访问这个mapping,则会返回value类型的默认值。


      IP属地:广东4楼2023-08-24 22:47
      回复
        3.mapping的局限性 mapping只能作为状态变量来使用(用php语言来讲就是只能在类的成员变量中定义,无法在函数内部定义) mapping无法遍历访问,没有长度,没有key集合、value集合,只是一个基础数据类型,如果要想实现更丰富的功能,就只能通过额外的类库来实现相关功能,例如自己定义一个结构体和对于的操作函数来实现。 struct itmap { mapping(address => uint) data; uint size; }


        IP属地:广东5楼2023-08-24 22:48
        回复
          4.写代码来练习一下吧


          IP属地:广东6楼2023-08-24 22:49
          回复