Dart中是否有一种动态访问属性的方法,比如使用Javascript对象作为哈希?

时间:2017-07-17 16:03:34

标签: dart

例如,在javascript中我可能有一个函数:

this.getPrettyAttr = function(attr){
    return attr + " is: " + this[attr];
}

attr是一个字符串,可以这样:

  

“力量为7”,“身高为5”,“力量为9001”,“名称为贝蒂”

在Dart中有没有相同的方法可以做到这一点,还是我再次手动操作?

1 个答案:

答案 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,那么镜像会使您的应用程序膨胀,因为编译器无法知道您的应用程序中可能调用哪些函数。