1

t 对我来说总是有点恼火(我在 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';

我觉得它相当矫枉过正和浪费。

4

1 回答 1

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”

于 2015-03-31T01:40:28.647 回答