アドバンストActionScriptアニメーションブックの角括弧[]付きのArray.Split()

StackOverflow https://stackoverflow.com/questions/1201804

質問

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top