Solidity
建構子應該是公共的嗎?
在我正在觀看的所有教程中,沒有人指定 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.
所以看起來契約輔導員可能只是
public
orinternal
。更多細節在這裡可見性和吸氣劑
Solidity v0.7(及以上)使用者更新:
建構子可見性已從 Solidity 中刪除。您必須從建構子中刪除“public”和“internal”修飾符。
在重大更改列表中閱讀有關此內容的更多資訊。