pragma solidity ^0.4.16;
/**
* The StructMapping contract does that 结构体与映射调试
1.映射类型mapping相当于python中的字典类型即内部存储键值对的集合,
保存一对一对的值,如address addr:int amount,目的是完成不同值类型
之间的对应和查找,如通过地址类型可以找到对应账户余额,(其实就是excel
表的两列简化版。。)
2.结构体类型struct通过str(member1,member2)可以直接初始化,调用成员时,使用
str.member1调用。而mapping可以通过内部的键找到对应值。在调用时,使用mapp[key]
方式,找到对应mapp的value。
*/
contract StructMapping {
struct Funder {
address addr;
uint amount;
}
mapping (uint => Funder) funders;
uint FunderNum ;
event ev(string _str,address _addr,uint _amount);
function newFunder(address _addr,uint _amount) public payable returns(uint){
funders[FunderNum++] = Funder(_addr,_amount);
ev("newFunder",_addr,_amount);
return FunderNum;
}
function setFunder(uint _num,uint _amount) public {
funders[_num].amount = _amount;
ev("newFunder",funders[_num].addr,funders[_num].amount);
}
function StructMapping () public{
}
}
/* 3.错误与问题:(1)下面 newfunder函数中的view报错了,换成payable后正确,对
函数的属性现在还是不是很明白。(2)有些函数明明写了returns 但是不写最后的
return语句竟然不报错。
4.总结:通过数字找对应结构体账户的方式很不错,但是如果只发送地址怎么修改
对应账户的值呢?猜想:估计需要再建立一个Funder和地址的映射或者再建立一个
number和地址的映射来进行查找。 */
solidity学习笔记(二)结构体与映射调试
猜你喜欢
转载自blog.csdn.net/qq_33828894/article/details/81272038
今日推荐
周排行