使用语法 mapping(keyType => valueType) 创建映射。
keyType 可以是任何内置值类型、字节数组、字符串或任何合约。
valueType 可以是任何类型,包括另一个映射或数组。
映射不可迭代。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
contract Mapping {
// 地址到整数的映射
mapping(address => uint) public myMap;
scss
Copy code
function get(address _addr) public view returns (uint) {
// 映射始终返回一个值。
// 如果该值从未设置过,它将返回默认值。
return myMap[_addr];
}
function set(address _addr, uint _i) public {
// 更新此地址的值
myMap[_addr] = _i;
}
function remove(address _addr) public {
// 将该值重置为默认值。
delete myMap[_addr];
}
}
contract NestedMapping {
// 嵌套映射(从地址到另一个映射)
mapping(address => mapping(uint => bool)) public nested;
scss
Copy code
function get(address _addr1, uint _i) public view returns (bool) {
// 即使未初始化,也可以从嵌套映射中获取值
return nested[_addr1][_i];
}
function set(address _addr1, uint _i, bool _boo) public {
nested[_addr1][_i] = _boo;
}
function remove(address _addr1, uint _i) public {
delete nested[_addr1][_i];
}
}
代码术语解释:
映射是 Solidity 中一种数据结构,用于将一个类型的值映射到另一个类型的值。
keyType 可以是任何内置值类型、字节数组、字符串或任何合约,valueType 可以是任何类型,包括另一个映射或数组。
映射是非迭代的,不能像数组一样通过下标访问所有元素。
通过在映射中使用 delete 可以将值重置为默认值。默认值取决于 valueType 的类型,通常为 0 或 false。
嵌套映射是将映射嵌套在另一个映射中的方式。可以使用嵌套映射来实现多维映射。