Solidity

array.length– 是如何工作的?

  • July 21, 2020

我很難理解人們為什麼打電話

array.length--

刪除數組中的元素後(如本答案和許多其他人所示)。為什麼需要這樣做?何時評估數組的長度?或者也許我遺漏了一些明顯的東西,array.length--實際上是做什麼的?

您必須使用array.length--才能準確地保持數組的長度。

混淆來自這樣一個事實,即delete在 Solidity 中實際上並沒有從數組中刪除一個元素,而只是將元素設置為它的預設值(例如,0對於 a uint256)。

以以下程式碼為例:

uint256[] public testArray = [1,2,3,4,5];

// testArray = [1,2,3,4,5]
// testArray.length = 5

delete testArray[4];

// testArray = [1,2,3,4,0]
// testArray.length = 5

testArray.length--

// testArray = [1,2,3,4]
// testArray.length = 4

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