1. ホーム
  2. enums

[解決済み] Dart enumの "値 "を取得する方法

2022-04-28 05:19:20

質問

Dartでenumが利用できるようになる前に、enumをシミュレートするために面倒でメンテナンスしにくいコードを書きましたが、今はそれを簡略化したいと思っています。 私は、Javaでできるような文字列としてenumの値を取得する必要がありますが、できません。

例えば、小さなテストコードでは、私が欲しいのは「MONDAY"」なのに、それぞれのケースで「day.MONDAY」を返しています。

enum day {MONDAY, TUESDAY}
print( 'Today is $day.MONDAY');
print( 'Today is $day.MONDAY.toString()');

MONDAY」だけを取得するには、文字列をパースする必要があるということでよろしいでしょうか?

どのように解決するのですか?

悲しいかな、あなたの言うとおりtoStringメソッドが返すのは "day.MONDAY" であり、より有用な "MONDAY" . として残りの文字列を取得することができます。

day theDay = day.MONDAY;      
print(theDay.toString().substring(theDay.toString().indexOf('.') + 1));

確かに便利とは言い難い。

enum 名を文字列として取得する別の方法は、より短いですが、最初の部分にも不要な文字列が作成されるため、効率も悪くなります。

theDay.toString().split('.').last

パフォーマンスが重要でないなら、簡潔に書くとしたらこんな感じでしょうか。

すべての値を反復処理したい場合は day.values :

for (day theDay in day.values) {
  print(theDay);
}