我想知道是否可以在Dart中重写toString
方法,这是我已经有的代码:
enum Style{italic, bold, underline}
Style.italic.toString()
// print Style.italic, but I want it to be just italic
目前无法覆盖enum
的方法。
编辑:从Dart 2.17开始将会有可能,当时计划发布“增强枚举”功能(如果一切顺利)。
届时,您将能够在enum
声明中声明方法并覆盖toString
。
因此,您将能够执行以下操作:
enum Style {
italic, bold, underline;
@override
String toString() => this.name;
}
要得到您所请求的内容,请使用以下方法。在Dart 2.15中,枚举值上的name
获取器已添加。
.name
扩展如 MyEnum.value.name
。enum Style { italic, bold, underline }
void main(List<String> args) {
print(Style.italic.name); // italic
}
在 dartPad 上运行
dart v:2.16.1
。 - Yeasin Sheikh
toString
方法另一个名称,这是一个例子:extension StyleExtension on Style{ String describe() => toString().split('.').last;}
- Ndimahname
扩展获取器。目前还没有实现。 - lrn