Solidity

建構子應該是公共的嗎?

  • October 11, 2021

在我正在觀看的所有教程中,沒有人指定 public,但 remix 會顯示未指定函式可見性的警告,並且假定為 public。

由於我盡可能不喜歡警告,因此我在必要時指定了公共,但我想知道建構子本身應該是公共的還是私有的。在我看來,它應該是一個私人的,因為它是由契約本身在創建時自動呼叫的,還是我的推理有問題?

當您嘗試使用private建構子編譯契約時,例如這個:

pragma solidity ^0.4.15;


contract PrivateConstructor {
   string public title;

   function PrivateConstructor() private {
       title = "Private Constructor";
   }

}

您收到此錯誤:

TypeError: Constructor must be public or internal.

所以看起來契約輔導員可能只是publicor internal

更多細節在這裡可見性和吸氣劑

Solidity v0.7(及以上)使用者更新:

建構子可見性已從 Solidity 中刪除。您必須從建構子中刪除“public”和“internal”修飾符。

在重大更改列表中閱讀有關此內容的更多資訊。

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