我可以从 here 获取有关访问另一个合约变量的信息

但是我找不到如何修改另一个契约(Contract)的变量。

这是合约A的例子,

contract A {
    uint public target;
}

这是合约B的例子
contract B {
    function edit_A_a() public {
        A.target = 1;  // some kind of this
    }
}

我想修改契约(Contract) B 中 target 变量的值。

此外,假设所有操作都在 Solidity 合约级别执行。

谢谢

最佳答案

将状态变量声明为 public 会生成公共(public) getter,但不会生成 setter。如果您希望另一个合约修改合约的状态变量,则必须自己编写一个函数来执行此操作:

contract A {
    uint public target;
    function setTarget(uint _target) public {
        target = _target;
    }
}

contract B {
    A a = Test(0x123abc...);  // address of deployed A
    function editA() public {
        a.setTarget(1);
    }
}

关于ethereum - 是否可以修改另一个合约的变量值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49449474/

10-09 23:57