Solidity
Solidity VS CONST 中的列舉
我們可以在 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' }