Solidity

從契約 B 更改契約 A 中的狀態變數內容

  • April 22, 2018

如果我有兩個契約,契約 A 和契約 B。如何從契約 B 更改契約 A 中公開聲明的狀態變數的內容?

變數是 並不重要public。它暗示了很多事情,但並不意味著任何人或任何契約都可以出現並覆蓋它。

contract A將不得不公開一個功能。contract B將需要了解此功能以及了解合約 A 的地址。這不僅僅是解決這些問題的一種方法。作為一個起點,考慮一下。

在合約 A 中,創建一個實際寫入狀態變數的函式。

function setValue(uint newValue) public returns(bool success) {
 someValue = newValue;
 return true;
}

在合約 B.sol 中,通知 B 關於 A 的介面和位置,並實例化一個實例。

contract AInterface {
 function setValue(uint newValue) public returns(bool success);
}

contract B {

 AInterface a;

 function B(address addressContractA) public {
   a = AInterface(addressContractA);
 }

 function setThatThing(uint newNumber) public returns(bool success) {
   return a.setValue(newNumber);
 }
}

希望能幫助到你。

引用自:https://ethereum.stackexchange.com/questions/46335