"Modular Contracts"中有使用映射的示例代码,但是我看不到每个映射索引的值在哪里分配。
映射定义为:
mapping(address => uint256) balances;
并将其传递给库函数“ Balances”:
library Balances {
function move(mapping(address => uint256) storage balances,
address from,
address to,
uint amount) internal {
require(balances[from] >= amount);
require(balances[to] + amount >= balances[to]);
balances[from] -= amount;
balances[to] += amount;
...
但是我看不到最初在完整code example的任何部分中将任何值实际添加到balances
的地方。
move
函数首先检查是否为balances[from] >= amount
。在该函数的末尾,您会看到它在标识的balances
上进行了加减,但是该代码将永远无法到达,对吗?由于require(balances[from] >= amount);
将始终返回false。
我想念什么?
答案 0 :(得分:1)
这只是模块化合同的一个示例,您可以在构造函数中添加任何余额,例如
constructor() public {
balances[yourAddress] = amount
}