Solidity

Solidity 中的嵌套合約?

  • April 5, 2022

根據 Solidity 0.4.16 文件,契約類似於物件導向語言的類的概念。話雖如此,我們能否在契約中創建契約。

如果是,那麼請用一個工作樣本解釋或至少提供我們可以創建的各種嵌套合約的分類。

如果不是,是什麼阻止我們做,即實際挑戰,同時做出不具有嵌套契約的決定。

以類似方式提出的問題,但沒有直接解決這個問題:testrpc,未開採契約創建契約?

Solidity 允許合約從其他合約繼承。

Solidity 還允許在合約中使用自定義數據結構。對於大多數用途,這些結構類型可以代替“私有類”(Java)契約中的契約。

並且 Solidity 合約可以創建新合約(“工廠”模式),儘管新合約不需要有任何連結回“父”。合約可以呼叫所有其他合約的方法,因此一個合約可以將另一個合約視為“子”或“庫”,只是在它使用該合約的方式上,但它們之間沒有正式的關係。

不,合約不能嵌套在 Solidity 中。在Remix中執行以下程式碼片段以親自查看:

// SPDX-License-Identifier: Unlicense
pragma solidity >=0.8.4;

contract Foo {
   uint256 public foo;

   contract Bar {
       uint256 public bar;
   }
}

編譯失敗並出現以下錯誤:

> from solidity:
ParserError: Function, variable, struct or modifier declaration expected.
--> contracts/Foo.sol:7:5:
 |
7 |     contract Bar {
 |     ^^^^^^^^

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