👨💻
Dartで(swiftみたいに)enumにメソッド持たせたい
Dartで(swiftみたいに)enumにメソッド持たせたい
siwftのenumだと、enum内にそのままfunc() を定義できて便利。
これと対応する表現のDart実装メモ。
refs: https://github.com/kevmoo/dart_side
Come to the Dart side..
May the Dart be with you...
Dart Vader...
SwiftのEnumの例
enum ProgrammingLanguage {
case swift
case dart
func whichOS() -> String {
switch(self) {
case .swift:
return "iOS";
case .dart:
return "Android";
}
}
}
// 利用コード
let language: ProgrammingLanguage = .swift
print(language.whitchOS()) // "iOS"
DartでのEnumの実装
enum ProgrammingLanguage {
swift,
dart,
}
// 「extension on ~」を利用して、enumを拡張する
// 下記のように、Extension名を省略すると、スコープをこのファイル内(private)絞れるらしい
// extension on ProgrammingLanguage {
extension ProgrammingLanguageExtension on ProgrammingLanguage {
String whichOS() {
switch(this) {
case ProgramingLanguage.swift:
return "iOS";
break;
case ProgramingLanguage.dart:
return "Android";
break;
}
}
}
// 利用コード
final ProgrammingLanguage language = ProgrammingLanguage.swift;
print(language.whichOS()); // "iOS"
最後に
Swiftだと、enum内部に定義できるので直感的かつ、手軽さがある。
Dartだと、多少の手間はあるが、同じことができるのでありがたい。
Come to the Dart side.( https://github.com/kevmoo/dart_side)
Discussion