如需获取本内容的最新版本,请参见 Cyfrin.io 上的 Enum(代码示例)
Solidity支持枚举类型,它们非常适合用于建模选择项和跟踪状态。 枚举可以在合约外部声明。
solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
contract Enum {
// 表示运输状态的枚举
enum Status {
Pending,
Shipped,
Accepted,
Rejected,
Canceled
}
// 默认值是类型定义中列出的第一个元素,本例中为"Pending"
Status public status;
// 返回无符号整数
// Pending - 0
// Shipped - 1
// Accepted - 2
// Rejected - 3
// Canceled - 4
function get() public view returns (Status) {
return status;
}
// 通过将无符号整数传递到输入来更新状态
function set(Status _status) public {
status = _status;
}
// 你可以像这样更新到特定的枚举
function cancel() public {
status = Status.Canceled;
}
// 删除会将枚举重置为其第一个值,0
function reset() public {
delete status;
}
}
Remix Lite 尝试一下

声明和导入枚举
声明枚举的文件
solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
// 这是保存的'EnumDeclaration.sol'
enum Status {
Pending,
Shipped,
Accepted,
Rejected,
Canceled
}
Remix 尝试一下

导入上述枚举的文件
solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import "./EnumDeclaration.sol";
contract Enum {
Status public status;
}
Remix Lite 尝试一下

END