1

これはいつも私にとって少しいらだたしいものでした (私も 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 に答える