2016-09-29 9 views
2

なぜ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"; 
} 

答えて

3

違いは、変数が保持できる厳密な値のセットを定義することで、何か悪いことを与えようとするとコンパイル時エラーが発生します。

文字列を使用すると、任意の値を取ることができます。プログラム内の定義によって文字列が「不良」である場合は、代わりに実行時にエラーが発生します。そうでないと、予測できない動作につながります。

コンパイル時に失敗するものは、実行時に失敗するものよりずっと優れています。可能であれば。

@ジェフもそうだけど。列挙型は空間をほとんど占有しないため、多くの変数が浮遊している場合は、列挙型を使用すると違いが生じる場合があります。

+0

おかげさまで、コンパイルとランタイムコンポーネントについて考えることさえなかった...それは多くの意味があります。 @ 4MattのNpである – 4Matt

+0

。実行時にポップアップを開始するまで、コンパイル時のエラーを呪います。私の答えがあなたの質問に最もよく答えると思うなら、それを受け入れてください。 – Carcigenicate

2

2の理由は:

1)ほとんどの言語で列挙は、典型的には、同等の文字列よりも少ないメモリを取る整数または類似を使用して実装されます。

2)コードを見ている他の開発者が、変数が取りうる可能性のある状態の有限リストがあり、それらが自然言語であることを伝えるためのガイドです。

1
  1. 列挙型は、ほとんどの言語で、コンパイラに知られており、有限の値ので
  2. コンパイル時にチェックすることができます制限された整数(セットに有限値のセットを取ることができ整数)であります列挙型の格納と操作は、計算量が少なくて済む
  3. ほとんどのコードエディタでは、コードを使用できるようにする何らかの種類のIntelliSenseが用意されています可能な値の1つを選択して、コードをより書き込み可能にします。