Solidity
列舉如何工作?
我剛剛開始
Solidity
並且JavaScript
正在嘗試理解列舉。我有一份簡單的契約pragma solidity ^0.4.4; contract SimpleEnum { enum SomeData {Channel} SomeData sd; function set_values(uint a) { sd.Channel = a return sd } }
我試圖弄清楚如何設置
Channel
,但它似乎不起作用。
你有一些錯誤,所以考慮閱讀solidity docs。此外,remix是編碼和調試以及編碼練習的便捷工具。我修改了你的程式碼,如下:
pragma solidity ^0.5.0; contract SimpleEnum { enum SomeData {DEFAULT,ONE,TWO} SomeData someData; constructor() public { someData = SomeData.DEFAULT; } function setValues(uint _value) public { require(uint(SomeData.TWO) >= _value); someData = SomeData(_value); } function getValue() public view returns (uint){ return uint(someData); } }
希望有幫助~
更新
關於Enums,描述如下:
列舉是在 Solidity 中創建使用者定義類型的一種方法。它們可以顯式轉換為所有整數類型,但不允許隱式轉換。顯式轉換在執行時檢查值範圍,失敗會導致異常。列舉至少需要一個成員。
列舉值按照定義的順序編號,從 0 開始。如果要獲取列舉的值,請執行
uint(enum_variable)
.