Arrays 通过[String][String]进行嵌套数组/对象访问

Arrays 通过[String][String]进行嵌套数组/对象访问,arrays,string,haxe,openfl,Arrays,String,Haxe,Openfl,在AS3中,我可以访问嵌套数组/对象,如下所示: var platformObj:Object = {"filters": {"manufacturer": ["Adobe Windows"]}; trace(platformObj["filters"]["manufacturer"]); //trace output: "Adobe Windows"; Haxe with:String中的错误应为Int(对于第二个参数): platformObj[“过滤器”][“制造商”] 如何在Haxe/

在AS3中,我可以访问嵌套数组/对象,如下所示:

var platformObj:Object = {"filters": {"manufacturer": ["Adobe Windows"]};
trace(platformObj["filters"]["manufacturer"]); //trace output: "Adobe Windows";
Haxe with:String中的错误应为Int(对于第二个参数):
platformObj[“过滤器”][“制造商”]


如何在Haxe/OpenFL中实现这一点?

OpenFL.utils.Object
基本上只是一个
typedef
对象,因此以下操作很好:

trace(platformObj.filters.manufacturer); // [trace] Main.hx:6: [Adobe Windows]
如果需要使用
字符串
访问字段,可以使用

在引擎盖下,所有这些只是:


您可以使用点表示法:

var platformObj = {filters: {manufacturer: ["Adobe Windows"]}};
// the type of platformObj is `{filters:{manufacturer:Array<String>}}` in this case
trace(platformObj.filters.manufacturer);
使用Haxe 3.3+时,可以使用
Any
而不是
Dynamic


前两种使用起来更安全。最后一个使用动态/反射的选项可能会有副作用。

第三个选项正是我想要的,对我来说最有意义,事实上我正处于解决这个问题的边缘-很高兴我问了,很高兴知道其他方法!使用对象来包含我提到的信息与使用动态对象有什么区别?如果我使用Dynamic,对象的哪些限制将被取消?感谢StringMap的介绍,我以后会严格使用它。Haxe本身没有对象,但有动态。哦,是的,哦,哦,我也在使用OpenFL,所以我混合使用Haxe和OpenFL。啊,我对OpenFL了解不多。似乎他们创建了一个抽象类
对象
,它是Dynamic的别名,带有一些额外的函数。任何用例和动态用例之间的区别是什么?
trace(Reflect.field(Reflect.field(platformObj, "filters"), "manufacturer"));
var platformObj = {filters: {manufacturer: ["Adobe Windows"]}};
// the type of platformObj is `{filters:{manufacturer:Array<String>}}` in this case
trace(platformObj.filters.manufacturer);
var platformObj = ["filters" => ["manufacturer" => ["Adobe Windows"]]];
// the type of platformObj is `Map<String, Map<String, Array<String>>>` in this case
trace(platformObj["filters"]["manufacturer"]);
var platformObj:Dynamic = {filters: {manufacturer: ["Adobe Windows"]}};
var filters = Reflect.field(platformObj, "filters");
var manufacturer = Reflect.field(filters , "manufacturer");
trace(manufacturer);