Contract-Development
公共變數的可訪問性
如果我有一個
public
狀態變數,這是否意味著其他合約可以訪問甚至更改它的值?我從這裡製作了一個加密幣,所有變數都聲明為
public
,所以我擔心其他合約是否只能查看這些變數或者它們也可以更改值?
狀態變數將
public
具有自動生成的訪問器,其他合約可以使用該訪問器來讀取該變數。但是,公共狀態變數只能由更改變數的合約中的函式更改。如果沒有其他合約可以訪問的此類功能,則狀態變數不能被其他合約更改。
函式可以指定為
external
、或public
,其中預設值為。internal``private``public
external:外部函式是合約介面的一部分,這意味著它們可以從其他合約和交易中呼叫。外部函式 f 不能在內部呼叫(即
f()
不工作,但this.f()
工作)。外部函式在接收大量數據時有時效率更高。public:公共函式是合約介面的一部分,既可以在內部呼叫,也可以通過消息呼叫。對於公共狀態變數,會生成一個自動訪問器函式(見下文)。
internal:這些函式和狀態變數只能在內部訪問(即從目前合約或從其派生的合約中),而無需使用
this
.private:私有函式和狀態變數僅對定義它們的合約可見,而在派生合約中不可見。