【问题标题】:Where is this Solidity mapping variable initialised?这个 Solidity 映射变量在哪里初始化?
【发布时间】:2019-06-29 00:19:56
【问题描述】:

"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。

我错过了什么?

【问题讨论】:

    标签: ethereum solidity


    【解决方案1】:

    这只是模块化合约的一个示例,您可以在构造函数中添加任何余额,例如

    constructor() public {
      balances[yourAddress] = amount
    }
    

    【讨论】:

    • 好的,谢谢! (我只是在想,因为它被命名为“余额”,它可能是一个内置函数,可以返回该地址的实际 eth 余额。)
    猜你喜欢
    • 2023-01-20
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-27
    相关资源
    最近更新 更多