Erc-721

具有公共視圖功能的私有變數

  • August 5, 2022

在 OpenzeppelinERC721.sol合約中,引入了私有變數:

// Token name
string private _name;

// Token symbol
string private _symbol;

然後為這些變數分配一個公共視圖函式來顯示它們的內容:

/**
* @dev See {IERC721Metadata-name}.
*/
function name() public view virtual override returns (string memory) {
   return _name;
}

/**
* @dev See {IERC721Metadata-symbol}.
*/
function symbol() public view virtual override returns (string memory) {
   return _symbol;
}

為什麼這些是私有的而不是公開的?正如這裡提到的,在這兩種情況下,沒有人可以更改值。

您注意到的模式與使用internal儲存變數的方法競爭。

這裡的一般想法是您可以讀取變數而不是寫入。它允許合約做出一些額外的保證,例如變數可以是只讀的。我有一個問題可以請求公共/私有變數的語言功能。

總的來說,這是物件導向設計中的一種常見模式,因此它很自然並且會不斷被使用。

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