Visibility

為什麼/應該使用 private 進行映射?

  • April 17, 2022
mapping(address => uint) private _balances;

function balance() public view returns (uint) {
   return _balances[msg.sender];
}

我的問題是。你應該/為什麼/什麼時候應該使用私有 _balances,而不是只使用 public 而不必為函式編寫 getter

mapping(address => uint) public balances;

主要區別是什麼?

編寫自己的 getter 並將 private 用於映射的唯一原因是,如果您想以某種方式將映射與合約的其他狀態結合起來(為 getter 添加一些附加值)。

在編寫自己的 getter 函式時,您所做的操作與solidity 將狀態變數和函式編譯為字節碼時所做的操作相同。

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