使用ASC2.0编译器创建对象时使用的动态密钥
问题描述:
对于我来说,总是有点刺激(我在Python中也做了一些编码,处理字典/对象类型的方式更清晰,更好),但在此之前ASC2.0,我总是能够避开它,使用ASC2.0编译器创建对象时使用的动态密钥
var fooS:String = 'foo';
var barO:Object = { ('' + fooS): 'bar' };
for (var key:String in barO)
{
trace(key, barO[key]);
}
(打印“富巴”)
但试图做的是,在ASC2。 0导致一个
'(' is not allowed here
错误。
任何想法?
我知道,我总是可以设置通过方括号访问动态变量的关键,但任何时候,我需要做的
var fooS:String = 'foo';
var a:Object = {};
a[fooS] = 'bar';
我觉得相当矫枉过正和浪费。
答
AS3符合ECMA第4版。 在这个版本中没有“内联”的方式来生成密钥。 正如你所说,只有下面的代码可用于:
var object:Object = {};
object['some' + 'dynamic' + 'key'] = 'some value';
唯一的选择是创建自己的API,也许是这样的:
var map:Map = new Map().put('some' + 'dynamic' + 'key', 'some value');
其中Map.put()返回“这”
较少的字符是矫枉过正和浪费?你怎么这么喜欢肮脏的(''+)语法? – Kodiak 2013-04-29 12:14:09
哦,不,我肯定不喜欢(''+)语法,我更喜欢as3把{myvar:“1”}当作一个对象,它有一个关键字,不管变量myvar包含什么,遗憾的是没办法做到这一点。 最大的烦恼是当设置一个对象的键在一个函数内。使用ASC2.0,没有一种方法可以在对象中设置变量的值。我更喜欢肮脏的语法,根本无法做到这一点。 – seaders 2013-04-30 12:02:13