Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9703

Dart(C#)のEnumを少しでもJava/Kotlinっぽい感じにしてやる

$
0
0
JavaやKotlinを使っていると、Enumに値を持たせるという便利な機能が当たり前だと思うのですが、DartやC#のEnumではそれができません。 なので、Enumを拡張して擬似的に値を持てるようにしてやりました。同じ制約を持つC#もEnumの拡張ができるので、同様に書けると思います。 Dart 2.15です void main() { for (var type in ArticleType.values) { print('${type.val.title} ${type.val.description}'); } } /// Javaっぽくしたいenum enum ArticleType { news, // ニュース sport, // スポーツ entertainment, // エンタメ fashion, // ファッション anime, // アニメ } /// Enumの値用のクラス class Article { const Article({ required this.title, required this.description, }); final String title; final String description; } /// 拡張してEnumの値を持てるようにしてやる extension ArticleTypeEx on ArticleType { Article get val { switch (this) { case ArticleType.news: return Article(title: 'ニュース', description: '最新のニュースです'); case ArticleType.sport: return Article(title: 'スポーツ', description: 'スポーツのニュースです'); case ArticleType.entertainment: return Article(title: 'エンタメ', description: '流行りのエンタメ情報です'); case ArticleType.fashion: return Article(title: 'ファッション', description: 'トレンドファッションアイテム'); case ArticleType.anime: return Article(title: 'アニメ', description: '今期覇権アニメです'); } } } メリット enumの値の定義が漏れた場合、コンパイルエラーとなり気づくことができる フィールドを増やすたびに拡張を生やさなくていい。switch文はここだけで済む。保守しやすい

Viewing all articles
Browse latest Browse all 9703

Trending Articles