// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.7;
//mapping
//how to declare a mapping (simple and nested)
//Set, get ,delete
//["alice", "bob", "charlie"] //做一个映射查找数组元素比遍历省gas费
//{"alice":true, "bob":true, "charlie":true}//拿bob变量名称去映射里返回他的值,如果不是true则这个bob值在数组不存在
contract Mapping {
mapping(address => uint) public balances;//记账式类型,针对某个地址记录他的账本余额,一个地址对应一个数字就是账本映射
mapping(address => mapping(address => bool)) public isFriend;//嵌套式映射,查询2个映射返回值是否true判断是否是friend
function examples() external {
balances[msg.sender] = 123;
uint bal = balances[msg.sender];
uint bal2 = balances[address(1)]; //数组中不存在的值默认返回uint,uint默认值为0
balances[msg.sender] += 456; //123+456 = 579
delete balances[msg.sender]; //删除之后恢复到默认值,并不是真正删除,0
isFriend[msg.sender][address(this)] = true;//嵌套式赋值
}
}