Solidity
Solidity 是否為創建的嵌套合約創建了一個隱式 getter?
Solidity 是否為創建的嵌套合約創建了隱式 getter?
例子:
contract Foo { .... } contract Bar { Foo public foo; Bar() { foo = new Foo(); } }
使用 Truffle 進行嘗試時,它告訴我這
Bar.foo()
不是 ABI 的一部分。我做錯了什麼,或者
foo()
只是不是由 Solidity 編譯器創建的?(我希望它返回創建的Foo()
合約的地址)
如果你在一個 sol 文件中有 2 個合約定義,ContractA 和 ContractB,並且你想部署 ContracB,那麼像這樣使用它:
var ContractB = artifacts.require("ContractB") module.exports = function(deployer) { deployer.deploy(ContractB, '750000000000000000000000000', 'MyCoinName', 18,{gas: 4700000}) };
注意:不應使用 .sol 並使用要部署的合約的名稱。
在 Solidity 0.5.x 中,您已明確將合約轉換為地址。編寫返回合約地址的函式的方法不止一種。在問題中“隱式”觀察……
contract Foo { .... } contract Bar { Foo foo; address public fooAddress; Bar() { foo = new Foo(); fooAddress = address(foo); } }
因此,
thisContract.fooAddress()
返回address
offoo
。希望能幫助到你。