编辑: 迷音桑 | 2017-09-10 |
balances[receiver] += amount;
} function send(address receiver, uint amount) { if (balances[msg.sender] <
amount) return;
balances[msg.sender] -= amount;
balances[receiver] += amount;
Sent(msg.sender, receiver, amount);
} } 这个合约引入了一些新的概念,让我们一个一个来看一下. address public minter;
这行代码声明了一个可公开访问的状态变量,类型为address. address类型的值大小为160 bits,不支持任何算术操作.适用于存储合约的地址或其他人的 公私钥.public关键字会自动为其修饰的状态变量生成访问函数.没有public关键字的变量将 无法被其他合约访问.另外只有本合约内的代码才能写入.自动生成的函数如下: function minter() returns (address) { return minter;
} 当然我们自己增加一个这样的访问函数是行不通的.编译器会报错,指出这个函数与一个状 态变量重名. 下一行代码 mapping (address =>
uint) public balances;
创建了一个public的状态变量,但是 其类型更加的复杂.该类型将一些address映射到无符号整数.mapping可以被认为是一个哈 希表,每一个可能的key对应的value被虚拟的初始化为全0.这个类比不是很严谨,对于一个 mapping,无法获取一个包含其所有key或者value的链表.所以我们得自己记着添加了哪些东 西到mappi........