【Enum】
枚舉(enum
)和 struct
非常類似,只是 enum
中的每個參數會自動從 0 開始依序初始化。
Enum具有以下的性質:
內部已有整數型態的元素存在
可以存進uint8的型態,如果數值數量介於0~255,若大於256個值則可宣告為uint16
enum ActionChoices { GoLeft, GoRight, GoStraight, SitsStill }
ActionChoices choice;
ActionChoices constant defaultChoice = ActionChoices.Gostraight;
在 Solidity 中 enum
更常被用來進行模型選擇(model choice),或者追蹤狀態(track of state)。
pragma solidity ^0.8.11;
contract MyEnums {
enum Rarity {
original, // 0
rare, // 1
super_rare // 2
}
Rarity public rarity;
constructor() {
rarity = Rarity.rare;
}
// 我們可以直接將一個型態為該 enum 的變數賦值為某特定屬性
function makeSuperRare() public {
rarity = Rarity.super_rare;
}
// 我們可以藉由 enum 初始化的 INDEX 來進行賦值
function set(Rarity _rarity) public {
rarity = _rarity;
}
// 我們可以藉由 delete 來重置這個 enum 成他的初始值 0
function reset() public {
delete rarity;
}
}
struct
和 enum
的差別:
Struct 用於表示一個複雜變數
Enum 用於表示一個單一變數的不同狀態或值
Last updated
Was this helpful?