这个 Solidity 映射变量在哪里初始化?
Where is this Solidity mapping variable initialised?
"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);
总是 return false。
我错过了什么?
这只是模块化合约的一个示例,您可以在构造函数中添加任何余额,例如
constructor() public {
balances[yourAddress] = amount
}
"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);
总是 return false。
我错过了什么?
这只是模块化合约的一个示例,您可以在构造函数中添加任何余额,例如
constructor() public {
balances[yourAddress] = amount
}