• ベストアンサー

ActionScriptでクラスの配列

ActionScript3をちょっと触っているのですが、 Stringや独自クラスの配列の変数を宣言する 事は出来ないのでしょうか? var str[]:String; みたいな。 Array()を介さないとダメなのでしょうか? とすると、Array()の中が必ずStringだけとは 限らない状況に陥りそうな気がするのですが・・・。 実現方法をご教示下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • venzou
  • ベストアンサー率71% (311/435)
回答No.1

>Stringや独自クラスの配列の変数を宣言する >事は出来ないのでしょうか? ActionScript3 の配列には型がありませんので、出来ません。 >とすると、Array()の中が必ずStringだけとは >限らない状況に陥りそうな気がするのですが・・・。 はい、陥ります。(^^; 通常は、配列に代入する際に、型チェックをするなり、型変換する事で、特定の型のみが入っている配列を作ります。 しかし、プログラムのミスなどで、他の型が混入する可能性はあります。このミスを、コンパイルの時の型チェックで、エラーにするのは不可能です。 下記の例でも、型のチェックは実行時に行われます。確かに考えてみれば、この点は、不便ですね。 他の型が混入している可能性があるなら、配列からデータを取り出す際にも、型チェックをした方が安全だと思います。 ------------------------------------------------------------- 一応、Arrayクラスを拡張して、特定の型のみを保存する例が Livedoc にあります。 http://livedocs.adobe.com/flex/201_jp/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&file=10_Lists_of_data_166_6.html しかし、上記の中にも注意書きがありますが、この例はあくまでサンプルであり、実用的な物ではありません。特に下記の部分が、致命的で、これでは何の意味もありません。(^^; ----引用---- 第 3 に、このクラスでは、配列に任意の型の要素を挿入する配列アクセス演算子の使用を防止できません。 ------------ (つまり、配列アクセス演算子 [] を使えば、別の型が代入できるのです。) 結局は、「特定の型しか代入出来ない配列は作れない」という事になると思います。その前提で、プログラムを書く必要があります。

naktak
質問者

お礼

なるほどーー。すごい勉強になりました。ありがとうございます。 ASは基本的に全然触ってなくて初心者レベルなのでかなりタメになります。 > (つまり、配列アクセス演算子 [] を使えば、別の型が代入できるのです。) これはこれでいいような気もしますね。トップレベルはArrayで、 その中身なんて知ったこっちゃない、ってことですよね?これ。 (マニュアルって日本語難しい・・・、読みなれてないと解読不可能ですね^^;) 異なった形式のArrayを入れる事で内部的なプログラムはごっちゃになるでしょうけど、 それはそういう作りにするのが悪いってことで・・・。 ありがとうございました。

関連するQ&A