Skip to content

映射 mapping

Solidity 中的映射(mapping)是用于关联键值对的一种数据结构。

类似于其他编程语言中的哈希表,可以将键映射到其对应的值。

语法

具体来说,映射是一个包含键和值的无序列表,每个键都关联到一个值。在 Solidity 中,映射的语法如下:

solidity
mapping (keyType => valueType) myMapping;

其中 keyType 是指映射中的键的数据类型, valueType 是指映射中对应的值的数据类型,myMapping 是映射的变量名。

例如,我们可以定义一个将字符串映射到整数的映射:

solidity
mapping (string => uint) myMap;

Solidity 中,映射可以用于多种场景,例如存储地址对应的余额、字符串对应的哈希值等等。

示例

下面是一个简单的 Solidity 智能合约,其中包含一个映射变量,并演示了如何使用映射来存储和访问数据:

solidity
pragma solidity ^0.8.0;

contract MyContract {

    mapping (address => uint) public balances;

    function deposit() public payable {
        balances[msg.sender] += msg.value;
    }

    function getBalance(address _addr) public view returns (uint) {
        return balances[_addr];
    }
}

在该合约中,我们定义了一个名为 balances 的映射,它将每个地址映射到它们的余额。

deposit() 函数用于为合约中调用者的地址增加余额;getBalance() 函数用于返回给定地址的余额。