0

アドビは、辞書について具体的に述べています。

toString() の呼び出しから返される値ではなく、オブジェクトの ID を使用してオブジェクトを検索します。

しかし、私が走るとき

if(myInstance in myDictionary)  { ... }

myInstance が myDictionary の「キー」として既に存在するかどうかを確認するには、myInstance.tostring get が呼び出されます!

その理由や回避方法を知っている人はいますか?

4

1 に答える 1

1

このinキーワードは通常、文字列であるオブジェクト プロパティと共に使用されます。for eachループとループの違いを考えてみましょうfor in

通常、for inループを使用して、オブジェクトの動的プロパティを反復処理します。

private var o:Object = { property1: "value1", property2: "value2" };
for (var propertyName:String in o)
{
    trace(propertyName);
    trace(o[propertyName]);
}

Outputs:
property1
value1
property2
value2

したがって、コード スニペットでは、inキーワードが への呼び出しを引き起こしていますtoString()

キーが存在するかどうかをテストする正しい方法は、次のことをテストすることですnull

if (myDictionary[myInstance])
    trace("key exists and it has a value");
于 2012-12-26T03:16:32.837 に答える