gpt4 book ai didi

Dart:如何仅将特定类型变量的变量标识符名称转换为字符串

转载 作者:行者123 更新时间:2023-12-02 15:03:37 24 4
gpt4 key购买 nike

此处使用 Dart。

正如上面的标题所示,我有一个类(如下所示),它具有三个 bool 实例变量。我想要做的是创建一个函数来检查这些实例变量的标识符名称并将它们每个都打印在字符串中。 ClassMirror 类附带的 .declarations getter 几乎可以做到这一点,但它还提供了构造函数的名称以及类中的任何其他方法。这可不行。所以我真正想要的是一种按类型过滤的方法(即,只给我字符串形式的 bool 标识符。)有什么方法可以做到这一点吗?

class BooleanHolder {

bool isMarried = false;
bool isBoard2 = false;
bool isBoard3 = false;

List<bool> boolCollection;

BooleanHolder() {


}

void boolsToStrings() {

ClassMirror cm = reflectClass(BooleanHolder);
Map<Symbol, DeclarationMirror> map = cm.declarations;
for (DeclarationMirror dm in map.values) {


print(MirrorSystem.getName(dm.simpleName));

}

}

}

输出是:已经结婚是Board2是Board3 bool 值转字符串 bool 持有者

最佳答案

示例代码。

import "dart:mirrors";

void main() {
var type = reflectType(Foo);
var found = filter(type, [reflectType(bool), reflectType(int)]);
for(var element in found) {
var name = MirrorSystem.getName(element.simpleName);
print(name);
}
}

List<VariableMirror> filter(TypeMirror owner, List<TypeMirror> types) {
var result = new List<VariableMirror>();
if (owner is ClassMirror) {
for (var declaration in owner.declarations.values) {
if (declaration is VariableMirror) {
var declaredType = declaration.type;
for (var type in types) {
if (declaredType.isSubtypeOf(type)) {
result.add(declaration);
}
}
}
}
}

return result;
}

class Foo {
bool bool1 = true;
bool bool2;
int int1;
int int2;
String string1;
String string2;
}

输出:

bool1
bool2
int1
int2

关于Dart:如何仅将特定类型变量的变量标识符名称转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23025743/

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