20-Solidity8.0-映射 mapping

421 阅读1分钟

solidity里的映射可以理解为键-值的对应关系,可以通过键来查找值,键必须是唯一的,但值可以重复。

定义方式为:mapping(键类型=>值类型),例如 mapping(address=>uint) public balances,这个映射的名字是balances,权限类型为public,键的类型是地址address,值的类型是整型uint,在solidity中这个映射的作用一般是通过地址查询余额。

键的类型允许除映射外的所有类型。

映射balances中包括三个键值对(user1:100,user2:200,user3:300),输入user2即可得到200

pragma solidity ^0.8.7;

contract Mapping{
   mapping(address => uint) public balances;
   mapping(address => mapping(address => bool)) public isFriend;

   function examples() external {
       balances[msg.sender] = 123;
       uint bal;
       uint bal2;
       bal = balances[msg.sender];
       bal2 = balances[address(1)]; // 0

       balances[msg.sender] += 456; // 123 + 456 = 579

       delete balances[msg.sender]; // 0

       isFriend[msg.sender][address(this)]= true;
   }
}