Solidity

Solidity VS CONST 中的列舉

  • August 30, 2018

我們可以在 Solidity 中將列舉值轉換為字元串嗎?就 GAS、ENums 或 CONST 而言,哪個更有效?

在引擎蓋下,列舉是整數——而不是字元串。編譯器會根據選項的數量自動選擇可能的最小整數值,因此幾乎總是可以減少空間,特別是如果您的值很長。

在您的智能合約中,Solidity 會自動為您處理名稱到整數的轉換。如果您聲明一個列舉,例如:

enum Colors {Red, Orange, Yellow, Green, Blue, Purple}

然後您可以參考契約中的其他地方,Colors.Red而不必擔心它實際上是0在記憶體中的。一個列舉中可以有 256 個選項,它仍將儲存為 a ,而為每個選項uint8創建 a將分配一個最小 32 字節的動態字節數組。Punchline:在智能合約中使用列舉。string

如果你正在編寫一個使用 web3 與合約對話的前端應用程序,只需在 JS 中創建一個映射對象。就像是:

const colorEnum = { 0 : 'red', 1 : 'orange', 2 : 'yellow', 3 : 'green', 4 : 'blue', 5 : 'purple' }

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