アドビは、辞書について具体的に述べています。
toString() の呼び出しから返される値ではなく、オブジェクトの ID を使用してオブジェクトを検索します。
しかし、私が走るとき
if(myInstance in myDictionary) { ... }
myInstance が myDictionary の「キー」として既に存在するかどうかを確認するには、myInstance.tostring get が呼び出されます!
その理由や回避方法を知っている人はいますか?
アドビは、辞書について具体的に述べています。
toString() の呼び出しから返される値ではなく、オブジェクトの ID を使用してオブジェクトを検索します。
しかし、私が走るとき
if(myInstance in myDictionary) { ... }
myInstance が myDictionary の「キー」として既に存在するかどうかを確認するには、myInstance.tostring get が呼び出されます!
その理由や回避方法を知っている人はいますか?
この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");