本文我们介绍Solidity语言中的映射,包括映射的基本定义、语法、映射的变量声明和基本读写操作。并且通过两个智能合约例子演示了映射的定义与基本操作。
基本概念
Solidity中关于映射的一些定义:
- 映射以键-值对(key => value)的形式存储数据;
- 键可以是任何内置数据类型,包括字节和字符串类型,但不允许引用类型,如数组、结构体和映射;
- 值可以是任何数据类型,包括另一个映射或数组;
- 映射是不可迭代的,即无法通过遍历映射来枚举所有的键;
- 映射通常用于将唯一的以太坊地址与值类型关联起来。
声明语法
映射的定义语法如下:
mapping(key => value) <access specifier> <name>;
例如:
mapping(address => uint) public balances;
以上代码声明了一个从 address
类型到 uint
类型的映射,可见性权限是 public
,名称为 balances
。
合约例子
例子1
演示映射的定义,基本的数据添加和读取操作。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
// 映射
contract Mapping {
// address => uint
mapping(address => uint) public map;
// 取值
function get(address _addr)