Solidity

刪除與分配給預設值

  • November 2, 2019

如果我有一個包含許多客戶帳戶的結構:

bytes32[] public customerID;
mapping(bytes32 => CustomerAccounts) public customerAccounts;

struct CustomerAccounts{
  address customer;
  uint balance;
}

要刪除結構中的客戶帳戶,最好分配一組預設值,如下所示:

CustomerAccounts memory blank;
customerAccounts[customerID] = blank;

或使用刪除,如下所示:

delete customerAccounts[customerID];

還是真的不重要?

雖然氣體的差異很小,< 1000,但我懷疑在前一種情況下,它可能仍然以某種可能導致問題的幽靈形式存在。

第二種選擇更好,它更清潔,更高效。它將結構的所有字節設置為零,並使程式碼更易於維護。

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