面试题:Solidity中Mapping是如何存储的?
泰岳区块链采用的是EVM solidity合约。那么Map在solidity合约里面到底怎么存储的呢?我们写一个测试用例来测试一下。
pragma solidity ^0.6.0;
// SPDX-License-Identifier: MIT
contract Test1{
uint256 public pID;
uint256 public rID;
string public contractName;
//简单写一个玩家id,
mapping(uint256=>uint256) public plyid; //rid -> pid
mapping(address=>uint256) public plyAddr_id;
constructor() public{
rID = 1;
contractName = "test1";
}
function joinGame() public{
if (plyAddr_id[msg.sender] == 0){
pID++;
plyAddr_id[msg.sender] = pID ;
plyid[rID] = pID;
}
}
}
这个是一个简单的存储合约,