gpt4 book ai didi

dart - 如何检查值是否为枚举?

转载 作者:行者123 更新时间:2023-12-03 02:41:06 26 4
gpt4 key购买 nike

我想检查 dart 中的值是否是 Enum,如果是,则自动序列化它。

我的症结是如何测试一个值是否是一个枚举。

这就是我测试其他类型的方式

if (T == int)
val = prefs.getInt(this._key);
else if (T == double)
val = prefs.getDouble(this._key);
else if (T == bool)
val = prefs.getBool(this._key);
else if (T == String)
val = prefs.getString(this._key);
else if ([""] is T)
val = prefs.getStringList(this._key);

但我似乎无法比较 Tenum
由于所有枚举都具有相同的方法,因此我希望能够感知它们并相应地处理它们

最佳答案

如果您需要检查是dynamic值枚举类型。您可以使用下一个方法。主要思想与@Oniya Daniel 的回答非常相似。

 enum Fruit {
banana,
apple,
orange,
}
下一个检查方法 isEnum健康)状况
 bool isEnum(dynamic data) {
final split = data.toString().split('.');
return split.length > 1 && split[0] == data.runtimeType.toString();
}
测试结果如下
  test('check enum runtime', () {
expect(isEnum(Fruit.banana), true);
expect(isEnum(null), false);
expect(isEnum(''), false);
expect(isEnum('banana'), false);
});
P.S.:获取枚举字符串值好用 describeEnum(<enum_value>)来自 package:flutter/foundation.dart

关于dart - 如何检查值是否为枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53924131/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com