在javascript中,我们可以通过ArrayName[“length”]而不是ArrayName.length来获得数组长度。但是在Dart中不起作用...我想通过字符串来获得对象属性。有没有办法在Dart中不使用Map来完成这个操作?
ws51t4hk1#
这在Dart中是不可能的。Dart是一种编译语言,并且基于在例如类中实际使用的方法来进行优化。因此,通过允许通过随机字符串访问字段和方法,将不可能预测实际使用的字段/方法,因此,它需要提供对每个可用字段/方法的访问,这将使编译的应用程序的大小增加很多。如果直接在Dart VM上运行,可以使用dart:mirrors提供对象上的反射,但这只有在直接使用Dart VM运行源代码时才有可能,因此它可以在源代码上反射。但是在一个Dart程序被编译之后,编译器将删除源代码中永远不会被使用的部分。
dart:mirrors
1条答案
按热度按时间ws51t4hk1#
这在Dart中是不可能的。Dart是一种编译语言,并且基于在例如类中实际使用的方法来进行优化。因此,通过允许通过随机字符串访问字段和方法,将不可能预测实际使用的字段/方法,因此,它需要提供对每个可用字段/方法的访问,这将使编译的应用程序的大小增加很多。
如果直接在Dart VM上运行,可以使用
dart:mirrors
提供对象上的反射,但这只有在直接使用Dart VM运行源代码时才有可能,因此它可以在源代码上反射。但是在一个Dart程序被编译之后,编译器将删除源代码中永远不会被使用的部分。