使用ASC2.0编译器在创建时为对象创建动态密钥

时间:2013-04-29 11:58:18

标签: actionscript-3

对我来说总是有点恼火(我在Python中做的不仅仅是编码,而且处理dict / object类型的方式更清晰,更好),但在ASC2.0之前,我总是能够解决这个问题,

var fooS:String = 'foo';
var barO:Object = { ('' + fooS): 'bar' };
for (var key:String in barO)
   {
      trace(key, barO[key]);
   }

(打印'foo bar')

但是尝试在ASC2.0中执行此操作会导致

 '(' is not allowed here

错误。

有什么想法吗?

我知道我总是可以通过方括号访问设置带动态变量的键,但是任何时候我都必须这样做

var fooS:String = 'foo';
var a:Object = {};
a[fooS] = 'bar';

我发现它相当过度和浪费。

1 个答案:

答案 0 :(得分:0)

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()返回“this”