Solidity
從契約 B 更改契約 A 中的狀態變數內容
如果我有兩個契約,契約 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); } }
希望能幫助到你。