🍉 加载中...


Dart 语言中为枚举添加方法的两种方式

1 minute read

开篇

在 Dart 2.17 中,枚举(Enum)得到了重大更新。现在,枚举可以拥有自己的成员变量成员方法构造函数,甚至还能覆盖现有成员。

本篇通过一段用于将枚举状态转换为温度的代码示例,演示枚举(Enum)更新前后的主要差异。

Dart < 2.17

 1enum Water {
 2	frozen,
 3	boiling,
 4	// ...
 5}
 6
 7extension Members on Water {
 8	int waterToTemp(Water water) {
 9		switch (water) {
10			case Water.frozen:
11				return 32;
12			// ...
13		}
14	}
15
16	String convertToTstring() => "The $name water is ${waterToTemp(this)} F."
17}
18
19void main() {
20	print(Water.frozen.convertToString());
21}

Dart >= 2.17

 1enum Water {
 2	frozen(32);
 3	boiling(212);
 4	// ...
 5
 6	final int tempInFahrenheit;
 7
 8	const Water(this.tempInFahrenheit);
 9
10	@verride
11	String toString() => "The $name water is $tempInFahrenheit F."
12}
13
14void main() {
15	print(Water.frozen);
16}

相关内容

参考资料