Enums的重要性
问题描述:
为什么Enums很重要,我有点困惑。比方说,我们有以下的代码...Enums的重要性
enum playerState {walking, running, idle, jumping, dead};
playerState myPlayerState = idle;
if{energy == 0}
{
myPlayerState = dead;
}
这是如何比只使用一个字符串,并完全避免枚举,并在需要时切换到新的合适的字符串值更有效?
string playerState = "idle";
if{energy == 0}
{
playerState = "dead";
}
答
不同之处在于枚举定义了变量可以容纳的一组严格的值,如果您尝试给它一些不好的东西,会给您一个编译时错误。
使用字符串,它们可以取任何值,如果字符串在程序中被定义为“坏”,它会在运行时失败;或根本没有,并导致不可预知的行为。
在编译时失败的事情要比它们在运行时失败要好得多;如果可能。
@Jeff虽然是对的。 Enum将永远占用更少的空间,所以如果你有很多变量在浮动,使用Enum可能会有所作为。
答
2个原因:
1)在大多数语言的枚举将使用整数或类似,其通常将占用更少的内存比可比的字符串来实现。
2)它是其他开发人员查看您的代码的指南,让他们知道变量可以使用的状态列表有限,并告诉他们自然语言中的内容。
答
- 枚举类型是在大多数语言,是已知的编译器和可以在编译时
- 检查由于有限值的受限整数(一个整数,可以采取一组一组有限值的)枚举的人类可读名称使得代码更具可读性
- 与字符串不同,对枚举的存储和操作需要较少的计算量
- 大多数代码编辑器都具有某种智能感知,可以让编码器选择其中一个可能的值,从而使代码更具可写性
感谢,甚至没有想到编译与运行时组件...这很有道理。 – 4Matt
@ 4Matt Np。你会诅咒编译时错误,直到你开始在运行时弹出一些东西。如果您认为我的回答最能回答您的问题,请接受。 – Carcigenicate