例如,在javascript中我可能有一个函数:
this.getPrettyAttr = function(attr){
return attr + " is: " + this[attr];
}
attr是一个字符串,可以这样:
“力量为7”,“身高为5”,“力量为9001”,“名称为贝蒂”
在Dart中有没有相同的方法可以做到这一点,还是我再次手动操作?
答案 0 :(得分:3)
您可以使用镜像。这是一篇供参考的文章:https://www.dartlang.org/articles/libraries/reflection-with-mirrors
在你的情况下,你可以这样写:
import 'dart:mirrors';
getPrettyAttr(Object x, Symbol attr) {
var mirror = reflect(x);
return '$attr is: ${mirror.getField(attr)}';
}
但是,在Dart中使用镜像时需要注意。如果您的程序只是服务器端(即,您使用dart:io
),那么镜像就可以了。但是如果您的程序正在编译为JavaScript,那么镜像会使您的应用程序膨胀,因为编译器无法知道您的应用程序中可能调用哪些函数。