Haxe - 使用字符串作为 DynamicAccess 的变量名
Haxe - use string as variable name with DynamicAccess
我正在尝试使用字符串 ('npcName') 作为变量名。到目前为止,我已经尝试将 dialogMap 转换为 DynamicAccess 对象,但是当我尝试这个时它给了我错误 'Invalid array access':
var npcName:String = 'TestNPC';
var casted = (cast Registry.dialogMap:haxe.DynamicAccess<Dynamic>);
var tempname = casted[root.npcName[0].message];
trace(tempname);
'dialogMap' 是一张空地图,我想这样填充它:
Registry.dialogMap['message'] = root.npcName[0].message;
如何在上面的代码行中使用字符串 npcName?有没有办法将字符串转换成可用的东西?任何帮助将不胜感激。
haxe.DynamicAccess
没有数组访问权限(如 map[key]
),但它是一种抽象类型,用于处理旨在通过字符串键保存对象集合的匿名结构。它设计用于 map.get(key)
和 map.set(key)
。它基本上是 Reflect.field
和 Reflect.setField
的更好包装器,并使用 Reflect.hasField
.
进行一些安全检查
var variable = "my_key";
var value = 123;
var dynamicMap = new haxe.DynamicAccess<Dynamic>();
dynamicMap.set(variable, value);
我注意到你做了很多转换和动态,所以 untyped 代码,这在 typed[=42= 中有点矛盾] 语。 dialogMap 的实际类型是什么?
不确定您是否知道,但是,Haxe 有自己的地图,这些地图是完全类型化的,因此您不需要转换。
var map = new Map<String, Int>();
map[variable] = value;
我认为 this article 有助于理解如何使用动态(无类型)对象。
Tip; for testing such small functionalities you can doodle around on the try.haxe site : http://try.haxe.org/#4B84E
希望这对您有所帮助,否则这里是一些相关文档:
我正在尝试使用字符串 ('npcName') 作为变量名。到目前为止,我已经尝试将 dialogMap 转换为 DynamicAccess 对象,但是当我尝试这个时它给了我错误 'Invalid array access':
var npcName:String = 'TestNPC';
var casted = (cast Registry.dialogMap:haxe.DynamicAccess<Dynamic>);
var tempname = casted[root.npcName[0].message];
trace(tempname);
'dialogMap' 是一张空地图,我想这样填充它:
Registry.dialogMap['message'] = root.npcName[0].message;
如何在上面的代码行中使用字符串 npcName?有没有办法将字符串转换成可用的东西?任何帮助将不胜感激。
haxe.DynamicAccess
没有数组访问权限(如 map[key]
),但它是一种抽象类型,用于处理旨在通过字符串键保存对象集合的匿名结构。它设计用于 map.get(key)
和 map.set(key)
。它基本上是 Reflect.field
和 Reflect.setField
的更好包装器,并使用 Reflect.hasField
.
var variable = "my_key";
var value = 123;
var dynamicMap = new haxe.DynamicAccess<Dynamic>();
dynamicMap.set(variable, value);
我注意到你做了很多转换和动态,所以 untyped 代码,这在 typed[=42= 中有点矛盾] 语。 dialogMap 的实际类型是什么?
不确定您是否知道,但是,Haxe 有自己的地图,这些地图是完全类型化的,因此您不需要转换。
var map = new Map<String, Int>();
map[variable] = value;
我认为 this article 有助于理解如何使用动态(无类型)对象。
Tip; for testing such small functionalities you can doodle around on the try.haxe site : http://try.haxe.org/#4B84E
希望这对您有所帮助,否则这里是一些相关文档: