基于以太坊的智能合约开发教程 Solidity mapping映射


映射类型在声明时的形式为 mapping(_KeyType => _ValueType)。 其中 _KeyType 可以是任何基本类型,即可以是任何的内建类型, bytes 和 string 或合约类型、枚举类型。 而其他用户定义的类型或复杂的类型如:映射、结构体、即除 bytes 和 string 之外的数组类型是不可以作为 _KeyType 的类型的。

pragma solidity ^0.4.19;

contract mappingTest{
    
    mapping(address => uint) idmaping;
    mapping(uint => string)  namemaping;
    
    uint public sum = 0;
    
    function register(string name){
        // 获取当前合约的调用者
        address account = msg.sender;
        sum++;
        // 将合约的调用者的地址与注册总量id绑定在一起
        idmaping[msg.sender] = sum;
        // 当前用户的id与用户注册的名字绑定在一起
        namemaping[sum] = name;
    }
    
    function getNameById(uint id)view public returns(string){
        return namemaping[id];
    }
    
    function getIdByAddress(address account)view returns(uint){
        return idmaping[account];
    }
}
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐