ethereum - 是否可以修改另一个契约(Contract)中的变量值?

标签 ethereum solidity

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

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

这是合约A的例子,

contract A {
    uint public target;
}

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

我想修改target的值来自合约 B 的变量。

此外,假设所有操作都在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 - 是否可以修改另一个契约(Contract)中的变量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49449474/

相关文章:

ethereum - 如何将 BSCScan 中的合约部署到币安智能链上?

ethereum - 覆盖 ethers.js 合约交互中的 gasPrice

java - 在Web3j中生成Java Wrapper时出错

blockchain - 以去中心化方式从 Chainlink 获取代币历史价格数据的最佳方式是什么?

design-patterns - Solidity - 从工厂模式到克隆工厂模式

javascript - 无效的 JSON RPC 响应 : undefined

ethereum - cryptozombies 为什么在比较中使用 keccak

ethereum - 声明错误 : Undeclared identifier - although it's present in ERC721. sol

java - Android 上的离线钱包 : can't access the JSON file

ethereum - 智能合约部署需要很长时间