没有合适的资源?快使用搜索试试~ 我知道了~
今天我们来学习下映射的用法,具体以网站的注册过程为例。 一、solidity中,映射的关键字为mapping,首先我们先来定义两个mapping, mapping(address =>uint) idmapping和mapping(uint =>string) namemapping。idmapping用来表示地址变量和整型变量的对应关系,在注册过程中用来表示账户地址和注册号;namemapping用来表示整型变量和字符串的对应关系,在注册过程中用来表示注册号和用户名称。 同时将sum的初始值设成1,用来储存注册号,并在后续调用注册函数时累加。用户调用注册函数时,需要传入参数name,同时将合
资源推荐
资源详情
资源评论
solidity入门学习入门学习——mapping
今天我们来学习下映射的用法,具体以网站的注册过程为例。
一、solidity中,映射的关键字为mapping,首先我们先来定义两个mapping, mapping(address =>uint) idmapping和mapping(uint =>string) namemapping。idmapping用来表示地址变
量和整型变量的对应关系,在注册过程中用来表示账户地址和注册号;namemapping用来表示整型变量和字符串的对应关系,在注册过程中用来表示注册号和用户名称。
同时将sum的初始值设成1,用来储存注册号,并在后续调用注册函数时累加。用户调用注册函数时,需要传入参数name,同时将合约的部署地址赋值给账户地址(address account
=msg.sender;),并通过两个mapping将账户地址和注册号,以及注册号和用户名称对应起来。
调用register之后,我们来测试下,可以通过getIdByAddress来获取注册号,通过getNameById来获取用户姓名。代码如下,
pragma solidity^0.5.0;
contract MapTest{
mapping(address =>uint) idmapping;
mapping(uint =>string) namemapping;
uint public sum=0;
function register(string memory name)public{
address account =msg.sender;
sum++;
idmapping[account]=sum;
namemapping[sum]=name;
}
function getIdByAddress(address add)view public returns(uint){
return idmapping[add];
}
function getNameById(uint id)view public returns(string memory){
return namemapping[id];
}
}
二、在下面图片中,在部署合约Map之后,在1处输入用户姓名点击register,在2处输入账户地址可以得到注册号,在3处输入注册号得到用户姓名,说明合约部署成功。
三、在第六行代码代码和倒数第四行代码中,起先我没有在string 后面加入memory ,程序一直提示报错,提示data location must be “memory” for parameter in function.加入
memory之后问题得到解决。
作者:鱼雁无恙
资源评论
weixin_38628920
- 粉丝: 4
- 资源: 962
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功