• ベストアンサー

伺かのYAYAでfor文から特殊な代入をする方法

test00=50 test01=90 test02=20 for i=0; i<3; i++ { EVAL("test0%(i)")=150 } このような感じでtest00~test02までに150を代入したいのですが、 このままの形では動作させる事ができません。 どのようにすれば良いでしょうか?

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

  • ベストアンサー
  • ponapalt
  • ベストアンサー率100% (1/1)
回答No.1

LETTONAMEという、実行中に自分で作った変数名に代入する専用機能があります。 http://emily.shillest.net/ayaya/index.php?%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB%2F%E9%96%A2%E6%95%B0%2FLETTONAME ですので、サンプルスクリプトの一部を以下の通りに変更すると動作します。 EVAL("test0%(i)")=150  ↓ LETTONAME("test0%(i)",150) 別の方法として、「EVALに対しての代入」はできませんが、「EVALの中で代入文を実行」することはできますので、 EVAL("test0%(i)")=150  ↓ _tmp = EVAL("test0%(i) = 150") でも実現できます。 "_tmp = "の部分は不要なEVALの実行結果を吸い取る部分ですので、_tmpという名前に意味はありません。 現在そのスクリプトを書いた部分で使用していないお好きな名前を使用してください。

関連するQ&A

  • 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); ============================================

  • For Next ステートメントで計算式を代入したいのですが・・・

    For Next ステートメントで計算式を代入したいのですが・・・ excel(2003) VBAでの質問です。 20行ごとに同じような表が20個つづいてあります(さらにそれが複数のシートにある形です)。 それぞれの特定のセルに、計算式を入れていきたいのですが、 現状こんな感じです。 For i = 18 To 400 Step 20 Cells(i, 6).Formula = "=IF(P6>'sheet2'!g18,g1,'sheet2'!f18)" Next i ここで、「=」の右側の計算式の部分のセル「P6」「g18」「g1」「f18」も、変数「i」の値に応じる形で20行ずつさげたいのですが、どうしたらいいのでしょうか?  ちなみに、イメージではこんな感じなのですが   Cells(i, 6).Formula = "=IF(P6+i>'sheet2'!g18+i,g1+i,'sheet2'!f18+i)" 当然エラーが出てしまいます。「P6」の部分を「cells(i-12,16)」とかにしてみても無理でした。 初歩的な質問で申し訳ないのですが、ご教示の程、よろしくお願いいたします。

  • AS3 TextFieldにfor文で一気に代入したい

    ステージに、Flashのオーサリングから テキストフィールド(ダイナミックテキスト)を3つ作りました。 インスタンス名 "t_txt1" "t_txt2" "t_txt3" forループで、この3つに一気に "あいうえお" を代入して表示させたいのですが for(var i:int; i>3; i++){ "t_txt"+i.text = "あいうえお"; } と書いても、"t_txt"+i の部分が インスタンス名として認識してもらえず エラーになってしまいます。 どうすればいいでしょうか。。? ご存知の方いらっしゃいましたらどうかよろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 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++; } 上記以外のメジャーな方法って有るのでしょうか? それともこれが最善でしょうか?教えて下さい。

  • 代入ができない。(undefined)

    環境:XP SP2, IE6/php, html, javascript submitした際にjavascriptの関数(getNo())が呼ばれ、その関数内で代入ができず参っています。 .php ----- <? $setNo = [111,222,333,444,555]; for($i=0;$i<5;$i++) {?> <input type="text" name="no[<?=$i;?>]" value="<?=$setNo[i];?>" id="no"> <?}?> (submit省略) .js ----- function getNo(obj) { var orgNo = document.all("no"); var bufNo = ""; //初期化空 //var bufNo ; //初期化しないと※1 //var bufNo = "huga";//初期化"huga"※2 for(var k=0; k<orgNo.length; k++) {  alert(orgNo[k].value);//k=0なら111と表示される bufNo = orgNo[k].value;//代入してるのに alert(bufNo='+bufNo); //空のまま →代入されてない なぜ?? //alert(bufNo='+bufNo);//※1undefined→代入されてない //alert(bufNo='+bufNo);//※2huga→代入されてない alert(orgNo='+orgNo[k].value);//k=0のときなら111と表示される } .jsには他にもsubmitから呼ばれている関数があり それらは正常に動作しますが、この関数だけおかしいので 書き直してみたりしましたが改善されません。 また、関数内で配列も宣言してますが、 配列要素にfor文のiなどを[i]のようにいれても、配列の値がうまく変数に代入できません。 ただし、[0]や[2]と指定すると正しい値が表示され、代入もできます。 undefinedになることが問題なのではなく 代入されない理由がわかりません。 どういうことになっているのか教えてください。

  • for文  by powan1

    例えば、 for(i=1,i<=10,i++){} となってる時、 この{}の中に if(??)i==2; とかは、出来るのですか? 多分出来ないと思うのですが、 こういう風にやりたい場合は どうすればいいのですか? 具体的に教えてください。 後、こういう風にもしたいのです。 for(i=1,i<=10,i++){ if(i==10)i=1; } iが1から10まで加算されたら、 (iが10になったら) iに1を代入しなさい。 というか、また、1に戻りなさい。 お願いします。

  • for文を使用して値を代入したいです。教えてください。

    5桁の10進数文字を16進数に変換するコードを作成したのですが、コード上の「商と余りを配列に代入」の箇所をfor文で作成したいのですが、うまくいかず1文1文のコードになってしまいました。「商と余りを配列に代入」する箇所に、当てはまるfor文のコードの所だけ、書き換えたいので教えていただけないでしょうか? //10進数文字を数字の16進数で表示// #include "stdafx.h" #define HEX 5 //「function」:入力文字された文字の処理// char ToInt( char cInt) { int mal=0; switch (cInt){ case '0': mal=0; break; case '1': mal=1; break; case '2': mal=2; break; case '3': mal=3; break; case '4': mal=4; break; case '5': mal=5; break; case '6': mal=6; break; case '7': mal=7; break; case '8': mal=8; break; case '9': mal=9; break; } return (mal); } //「function」:入力文字された文字数// char HexInt( char eInt) { char mul=0; switch (eInt){ case 0: mul='0'; break; case 1: mul='1'; break; case 2: mul='2'; break; case 3: mul='3'; break; case 4: mul='4'; break; case 5: mul='5'; break; case 6: mul='6'; break; case 7: mul='7'; break; case 8: mul='8'; break; case 9: mul='9'; break; case 10: mul='A'; break; case 11: mul='B'; break; case 12: mul='C'; break; case 13: mul='D'; break; case 14: mul='E'; break; case 15: mul='F'; break; } return (mul); } //「function」:桁数の計算(10×指数を計算)// int HexAcc( int n ) { int i; int ans=1; for( i=0; i<n; i++ ){ ans *= 10; } return (ans); } int _tmain(int argc, _TCHAR* argv[]) { int i=0,n=0,j=0,k=0,s=0,m=0; char decimal[255], ditto[255],sub[255],temp[255],flip[255],na[255]; int u=0,odd=0; int a=0,b=0; int sam1=0,sam2=0,sam3=0,sam4=0,sam5=0; int mas1=0,mas2=0,mas3=0,mas4=0,mas5=0; if( argc > 1 ){ decimal[s] = argv[1][i]; } else{ printf("10進数を入力してください。\n"); return 1; } for( k=0; k<=HEX; k++ ){ sub[k] = '0'; } for( k=0; k<=HEX; k++ ){ temp[k] = '0'; } for( k=0; k<=HEX; k++ ){ flip[k] = '0'; } for( k=0; k<=HEX; k++ ){ na[k] = '0'; } for( i=0; argv[1][i] != '\0'; i++ ){ decimal[i] = argv[1][i]; } decimal[i] = '\0'; for( i=0; decimal[i] != '\0'; i++ ){ if( decimal[i] != ' ' ){ ditto[n] = decimal[i]; n++; } } ditto[n]='\0'; for( n=0; ditto[n] != '\0'; n++ ){ if(( ditto[n] == '0' ) || ( ditto[n] == '1' ) || ( ditto[n] == '2' ) || ( ditto[n] == '3' ) || ( ditto[n] == '4' ) || ( ditto[n] == '5' ) || ( ditto[n] == '6' ) || ( ditto[n] == '7' ) || ( ditto[n] == '8' ) || ( ditto[n] == '9' )){ }else{ printf("エラー\n 10進数を入力してください。\n"); return 0; } } for( n=0; ditto[n] != '\0'; n++ ){ m = m + 1 ; } if( m <= HEX ){ }else{ printf("エラー\n入力文字数は、%d文字以内にしてください。\n",HEX); return 0; } for( n=0; ditto[n] != '\0'; n++){ sub[HEX-m+n] = ditto[n]; } sub[HEX] = '\0'; int ans=0, add=0; for( n=0; sub[n] != '\0'; n++){ ans = ToInt(sub[n]); add += ans * HexAcc(HEX-n-1); } //商と余りを配列に代入// sam1 = add / 16; mas1 = add - sam1 *16; temp[0] = mas1; sam2 = sam1 / 16; mas2 = sam1 - sam2 * 16; temp[1] = mas2; sam3 = sam2 / 16; mas3 = sam2 - sam3 * 16; temp[2] = mas3; sam4 = sam3 / 16; mas4 = sam3 - sam4 * 16; temp[3] = mas4; sam5 = sam4 / 16; mas5 = sam4 - sam5 * 16; temp[4] = mas5; //商と余りを配列に代入・ここまでfor文に変更したいです// temp[5]='\0'; for( a=0; a<2; a++ ){ b = temp[a]; temp[a] = temp[4-a]; temp[4-a] = b; } temp[n]='\0'; for( n=0; sub[n] != '\0'; n++){ na[n] = HexInt(temp[n]); } na[5]='\0'; printf("\n10進数文字を16進数で変換した値は %s \n",na); }

  • for文学び

    for文がいまいち理解できずに困っています。 いくつかのfor文の解説HPを見たのですが、例えば下記の or (i=1; 100>=i; i++) { trace(i); } の様なかたちに書けば、iは変数で、100になるまで計算が繰り替えされる、などのような説明があるだけで、どの様に使うのかが上手く理解できずにいます。 最初は 上記のASのtraceの部分でMC._x = i; と書けば100の位置まで移動するムービーという感じなのかなと思ったりしたのですが、大間違いでした。 for文初心者がfor文を覚えるのによい練習問題がありましたら、書き込みをいただきたく思います。またよい例題になる記載があるHPなどでもいいです。 ご存じありましたら、書き込みをいただきたく思います。よろしくお願いします。

    • ベストアンサー
    • Flash
  • For文について (DOS起動)

    テキストファイルの内容を1行ずつ取り出したいと思い、以下のコマンドを実行しました。  for /f %i in (test.txt) do echo %i このコマンドをWin7及びXPのOS上コマンドプロンプトで実行した場合は問題ありませんが、MS-DOS6.22やWin98、WinMEのDOS起動ディスクなどの場合、Syntax errorとなります。 ※test.txtの内容は、TABやSpaceなし、半角英数字のみの文字列で4行程度保存しています。 この為、DOS起動ディスクでは、For文を使えないのかと思い、以下コマンドを実行した所、正常に動作しました。  for %i in (1 2 3 4) do echo %i この事から、For文にてテキストファイルの読み込みが出来ない状況のようです。 どのようにすれば、テキストファイルを読み込む事が出来ますでしょうか。 宜しくお願い致します。

  • for文にて +=の意味がわかりません。

    最近ActionScriptの勉強を始めたのですが、for文にてわからない部分があります。内容は、 1から1000までの足し算を繰り返し行い、その合計値をmessage_txtに代入するアクションスクリプトを書きたい 最終的に答えは以下らしいのですが、ans+= i; という文の中で、「+=」がどういう働きをしているのかがよくわかりません。 どなたかわかりやすく解説していただけませんでしょうか? var ans = 0; for (var i = 1; i<=1000; i++) { ans += i; } message_txt.text = ans;

    • ベストアンサー
    • Flash

専門家に質問してみよう