アドバンストActionScriptアニメーションブックの角括弧[]付きのArray.Split()
-
05-07-2019 - |
質問
Keith PeterのAdvanced Actionscriptのこのコードがどのように機能するかを理解しようとしています。基本的に、forループがあり、:で区切られたキーと値のペアを分割します。コードは次のとおりです。
var definition:Object = new Object();
for(var i = 0;i < tokens.length; i++)
{
var key:String = tokens[i].split(":")[0];
var val:String = tokens[i].split(":")[1];
definition[key] = val;
}
そしてトークンは次のような値を含む文字列の配列です
["type:GraphicTile", "graphicClass:MapTest_Tile01"]
理解できないのは、&quot; [0]&quot;の重要性です。および「[1]」。 [1]は、文字列valが&quot;:quot;の後のデータを保持することをどのように示しますか? split(&quot; GraphicTile&quot;または&quot; MapTest_Tile01&quot;などの値)、およびsplit(&quot; type&quot;または&quot; graphicClass&quot;などのキー)の前のデータを指す[0]。 AdobeのActionscriptリファレンスには、このような角括弧を使用してArray.splitメソッドに渡すことができるパラメーターはリストされていません。
解決
split()メソッドは、文字列を分割して作成されたトークンの配列を返します。次に、この配列に[0]と[1]のインデックスを付けて、最初と2番目のメンバーを取得します。 tokens [i]がtokens配列の i 番目のメンバーにアクセスするために使用されるのとまったく同じです。
他のヒント
nickが正しい答えを出しました...
CookieOfFortuneが暗黙のうちに指摘したように、コードは本当に良くありません...
var definition:Object = new Object();
for(var i = 0;i < tokens.length; i++)
{
var parts:Array = tokens[i].split(":");
var key:String = parts[0];
var val:String = parts[1];
definition[key] = val;
}
これにより、文字列を2回分割することを回避できます...また、何が起こるかが明確になるかもしれません...
greetz
back2dos