solidity学习笔记(二)结构体与映射调试

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)