• ベストアンサー

複数の変数宣言を、for文で一気にやる方法ってありますでしょうか?

複数の変数宣言を、for文で一気にやる方法ってありますでしょうか? たとえば、tfという変数を3つ作りたいとき、 var tf1:TextField = new TextField(); var tf2:TextField = new TextField(); var tf3:TextField = new TextField(); ↑このように普通に書くのではなく for(var i:int=0; i<3; i++){  var this["tf" + i]:TextField = new TextField(); } ↑このようにfor文で一気に書こうとしたのですがエラーになります。 複数の変数宣言を、for文で一気にやる方法ってありますでしょうか? ご存知のかたいらっしゃいましたら、よろしくお願いいたします。

noname#179453
noname#179453
  • Flash
  • 回答数5
  • ありがとう数6

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

  • ベストアンサー
  • Seravy
  • ベストアンサー率47% (118/249)
回答No.2

同じ要素のデータを複数個作る時は、配列を使うと良いですよね。 恐らく下の文で配列を使おうとはしているのですが、配列(のメンバ)と変数の違いがよく理解されていないのが問題かと思います。 上では、tf1,tf2,tf3の、3つの変数を宣言していますが、 下の文では、thisという配列要素の"tf"+iというメンバに値をセットしつつ宣言をしようとしています。しかし配列のメンバは変数ではないため、何の宣言をしているのかわからなくなっています。 なお、このとき存在する変数は、thisという配列変数1つだけです。 何が言いたいかというと、配列は、配列自体が1つの変数であって、そのメンバーは変数宣言は必要有りません。 実際のところ、エラーが出るのは配列のメンバーを宣言するという行為にあるわけですが、そもそもthisという配列は本来もともと定義されているので使うのはよろしくないと思います。 下のコードをより的確にすると、 var tf:Array = new Array();//tf配列を宣言 for(var i:int = 0; i < 3; i++ ){ tf[i] = new TextField();//tf[0]、tf[1]、tf[2]にTextFieldオブジェクトを生成して代入 } となるはずです。 普段はJavaScript書きなのでもしかしたらコードが違うかも知れませんがそこはご容赦下さい;根本は同じはずなので… それでは成功を祈っています。

noname#179453
質問者

お礼

みなさま、すばやいご回答をたくさんありがとうございました。 おかげさまですぐに解決することができました。 本当にありがとうございました!

その他の回答 (4)

回答No.5

4です 追加です xx["xx"]とやった場合 型宣言もできないです ってことで var this["tf"+i:TexrField ↓ this["tf"+i] あと、先に言ってるひとがいますが 配列で作ったほうが、何個あるのかすぐ調べれるし for each()で巡回できるしなにかと便利と思います

noname#179453
質問者

お礼

非常に参考になりました、ありがとうございます!

回答No.4

var要らないです

noname#179453
質問者

お礼

非常に参考になりました、ありがとうございます!

  • joy_28
  • ベストアンサー率84% (45/53)
回答No.3

var max:uint=5;//5個生成 /*for (var i:uint=0;i<max;i++){ this["txt"+i]=new TextField(); addChild(this["txt"+i]); this["txt"+i].x=100; this["txt"+i].y=10+30*i; this["txt"+i].text=String(i); }*/ //以下のようにも、書けます。普通は、私は、こっちの方法を採ります。 for(var i:uint=0;i<max;i++){ var tf:TextField=new TextField(); addChild(tf); tf.x=100; tf.y=10+30*i; tf.text=String(i); }

noname#179453
質問者

お礼

非常に参考になりました、ありがとうございます!

  • joy_28
  • ベストアンサー率84% (45/53)
回答No.1

以下で行けるでしょう。 var max:uint=5;//5個生成 for (var i:uint=0;i<max;i++){ this["tf"+i]=new TextField(); addChild(this["tf"+i]); this["tf"+i].x=100; this["tf"+i].y=10+30*i; this["tf"+i].text=String(i); }

noname#179453
質問者

お礼

非常に参考になりました、ありがとうございます!

関連するQ&A

  • for文での変数宣言について(他言語共通)

    for(var i = 0; i < 9; i++) { } このように、for文の()内で変数宣言をすることがあるだろうと思います。 これを入れ子にするのならば当然(場合にもよりますが) for(var i = 0; i < 9; i++) { for(var j = 0; j < 9; j++) { } } このように、新しい変数を定義します。 しかし、次のように、2つのfor文が並列する場合、2つ目のfor文で変数宣言をすべきではありません。 ですが、 片方だけに宣言がある・for文の外に宣言がある・2つ目のfor文には別の変数を宣言する いずれもしっくり来ません。 どのように書くのが一般的なのでしょうか。 皆様の書き方をご投稿ください。よろしくお願いします。 //ここでvar i = 0;と書くか … A for(i = 0; i < 9; i++)//ここでfor(var i = 0; i < 9; i++)と書くか … B { } for(i = 0; i < 9; i++)//ここでfor(j = 0; j < 9; j++)と別の変数を定義するか … C { } //または、いずれでもない回答者様のオリジナルの書き方 ※この例では、1つ目のfor文が終わった時点でiの値を保持する必要はありません。

  • 教えて下さい。for文内での変数宣言について

    Javaのプログラムで困っています。 for文内でfor分だけ変数を宣言したいのですが、 その際変数名に数字(ナンバリング)を付与した形にしたいと考えています。 例) String Test1 String Test2 : : 上記の様な場合、for文をどの様に作成したらいいですか? num = 5; for(int i = 0; i < num; i++){ String Test = null; } ⇒このままだと変数Testが1つしか出来ない・・・   変数の後にナンバリングしたいのですが上手くいきません。 numの数はユーザの指定で毎回変更されるため、 for文でその数だけ変数を作成したいと考えています。 どなたかご教授宜しくお願い致します。

    • ベストアンサー
    • Java
  • for文を使って変数に値を入れる方法

    以下のプログラムでfor文を使ってx1に1, x2に2, x3に3を代入したいのですが、 変数x1~3をfor文を使って表す方法がわかりません。 下記のように var test = "x" + i; で変数testにx1という文字列を持たせ、そこにiを代入すれば上手くいくかなと思いましたが 上手くいきません。どのようにすれば期待通りになるか教えていただけないでしょうか。 ============================================ var x1 = 0; var x2 = 0; var x3 = 0; for(var i=1; i<=3 ; i++){ //x1に1, x2に2, x3に3を代入したい var test = "x" + i; test = i; } alert("x1=" + x1 + ",x2=" + x2 + ",x3=" + x3); ============================================

  • C++のfor文について

    C++では for ( int i = 0, j = 0; i < 10; i++ ) { } みたいな感じでforのなかで変数の宣言ができます。 ところで上の例ですとint型のiとjを2つ宣言していますが、 もしint型とchar型を宣言したい場合などは char j; for ( int i = 0; i < 10; i++ ) { } みたいにしないといけないのでしょうか? for ( int i = 0, char j; i < 10; i++ ) { } みたいにできると思ってやったらエラーになってしまうので・・。

  • JavaScriptでfor文

    初歩的な事ですが教えて下さい。 for文で宣言した変数をfor文内で変更した時、 通常の記述で上手く動作しません。 どのようにしたら良いのでしょうか? 意味をなさないfor文ですが… for (var i=0; i<5;i++){ alert("i=" + i); i=4; //ここが上手くいかない } 以下のようにすると意図した通りになります。 が、なんかかっこ悪い?違う気がする… for (var i=0; i<5;){ alert("i=" + i); i=4; //これだと上手くいく i++; } 上記以外のメジャーな方法って有るのでしょうか? それともこれが最善でしょうか?教えて下さい。

  • 配列変数の宣言「その2」

    「その2」 「その1」でも述べましたが、配列変数の宣言の仕方は2種類あると思います。 (1)・・・ int hairetu[]; (2)・・・ int [] hairetu; この宣言をした後、init()メソッドを使いこの2つの配列変数の範囲(?)を指定したいと思います。 (1)の指定方法・・・ hairetu = new int[10]; (2)の指定方法・・・ hairetu[] = new int[10]; (2)を指定するときは(1)の指定方法が使えませんでした。これはなぜでしょうか? 逆に、(1)を指定するときには(1)は配列変数であるにもかかわらず、[] なしでも指定ができるのでしょうか? 知っていれば教えてください。

    • ベストアンサー
    • Java
  • 【as3.0】for~文で変数に連番を適用したい

    初めてAS3.0を使用してゲームを作成しています。 5枚のムービークリップの位置をシャッフルしたいのですが、 シャッフルさせるイベントをそれぞれのムービークリップに適用させることが出来ずに困っています。 以下、現在のスクリプトです。 import flash.events.Event; var mixarrayX:Array = [0,60,120,150,200];//x位置のパターン var mixarrayY:Array = [0,20,50,80,90];//y位置のパターン this.addEventListener(Event.EXIT_FRAME,syaful); function syaful(e:Event):void { //ランダムで位置のパターンを抜き出す var syafulPTX1:int = (Math.random() * mixarrayX.length); var syafulPTY1:int = (Math.random() * mixarrayY.length); //カードの位置【x,y】を当てはめる var mix1:Array = [mixarrayX[syafulPTX1], mixarrayY[syafulPTY1]];   //MC1に抜き出した位置を適用させる MC1.x = mix1[0]; MC1.y = mix1[1]; //今回のパターンを配列から抜き出す。 syafulPTX1 = mixarrayX.shift(); syafulPTY1 = mixarrayY.shift(); } removeEventListener(Event.EXIT_FRAME,syaful); } for文を使って各変数の「1」等のナンバーにiを適用させて、ループさせれば良いとは思うのですが、 ["MC"+i]等と入力してもエラーになってしまいます。 for文で変数を宣言する場合の正しい書き方を教えていただけると助かります。 何卒、よろしくお願い致します。

    • ベストアンサー
    • Flash
  • Flash 変数宣言

    これまた超基本的な事ですが、 Flash(AS3)で変数宣言をする際の記述方法について質問させてください。 現在自分がやっている方法では、変数宣言する際 --------------------------------------------------------- var hensu:String = "あいうえお"; --------------------------------------------------------- としていて、これを例えばrootから ムービークリップ「mc」内に変数「hensu」を作る場合 --------------------------------------------------------- mc.hensu = "あいうえお"; --------------------------------------------------------- としています。これで特に問題ないのですが、 値を何も入れず、とりあえず変数だけ用意しておく場合、 rootに変数を作る時は --------------------------------------------------------- var hensu:String = new String(); --------------------------------------------------------- としています。また、 --------------------------------------------------------- var hensu:String; --------------------------------------------------------- だけでも、変数が作成されているよう?なのですが・・・ trace()で調べると new String()の場合は値が"空白"(何も表示されない) hensu:String;の場合は"null"になります。 という事はどちらの場合でも単純に変数だけ作るのであれば これで機能していると考えてもよいのでしょうか? この"空白"と"null"の違いを理解したいです。 また、rootからムービークリップ「mc」内に変数「hensu」を作る場合として、 --------------------------------------------------------- mc.hensu = new String(); --------------------------------------------------------- とすれば、大丈夫ですが --------------------------------------------------------- mc.hensu:String = new String(); --------------------------------------------------------- や --------------------------------------------------------- mc.hensu:String; --------------------------------------------------------- ではエラーが出ます。 root上に変数を作る時の --------------------------------------------------------- var hensu:String = new String(); --------------------------------------------------------- や、別の場所に変数を作る場合でも --------------------------------------------------------- mc.hensu = new String(); --------------------------------------------------------- では問題ないのに、 ●●●.変数:型 = new 型(); の形にするとエラーが出るのはなぜなのでしょうか? (記述方法が間違っているといわれればそれまでですが・・・)

  • Flashのfor文で変数名を・・・

    Flashでfor文を使い、変数に値をいれたいと考えています。 kotae1,kotae2,kotae3・・・kotae10という名前の変数に 数字の順に答えを格納していきたいのですが、 iを使って表現するにはどのようにすればいいのでしょうか。 for(var i = 0; i < 10; i++){ 「   」= i * 10; } 「 」のところです。 よろしくお願いします!

    • ベストアンサー
    • Flash
  • 変数の宣言について

    VBですけれども 変数の宣言なしに For i  ・  ・   ・ Next i などを記述しますと「変数の宣言がされていません」 というメッセージがでるのですが、テキストなどでは 変数の宣言などしていなくとも動作しますこれはどうして どういうことなのかご存知の方教えてください。 Dimとかの宣言もなしにです。 著書は 独習Visual Basic 6.0 などです。

専門家に質問してみよう