• ベストアンサー

全ての変数を初期化する方法はありませんか。

bagyoの回答

  • bagyo
  • ベストアンサー率40% (16/40)
回答No.2

こんにちわ。 変数全てを初期化する方法は無かったと思います。もし、そのような方法を希望されているのであれば、連想配列を利用することで実現できると思います。(最初は、確かundefで既に初期化されていると思いました) $DAT{"first"},$DAT{"second"},$DAT{"third"}等 初期化したい場合には、 %DAT = (); とすることで出来ると思います。

関連するQ&A

  • 変数に代入

    はじめまして。早速なのですが、 a0からa9までのMCがステージ上にあります。 10個のmcの(_xと_y)の初期値を一気に変数に代入するにはどうしたらいいでしょうか?

  • C言語で変数を初期化するにはどうすればよいでしょうか。

    こんにちは。 C言語で、一度文字列を入力した変数(ポインタとか配列のことを含めてます)を再度初期化することは可能でしょうか。「初期化」という表現が合っているのか自信はないのですが、要は一度変数に入れた文字列を消去して、再利用する方法を探しています。 目標は、 1.ファイルに変数の文字列を出力する FILE *fp = fopen("file.txt","w") char *str = "text" fprintf(fp,"%s",str) ↓ 2.その変数は初期化し、初期化した変数にまた文字列を代入する *str = 初期化 *str = "text2"; ↓ 3.それをまたファイルに出力する(以下エンドレス) fprintf(fp,"%s",str) という流れにしたいのですが、2.の「初期化」がわからないので、文字列を代入すると、最初にいれた"text"のあとに"text2"がくっついてくる形になってしまい困っています。 これだとstrの容量が大きくなってしょうがないですし、ファイルに出力される文字列も重複したものになってしまうので、いったんstrに入っている文字列を消去してしまって、また新たにstrに文字列を入れようと思っているのですが可能でしょうか。 1~3の動作をほぼエンドレスでやりたいので、新たに変数を作るというやり方意外に何か良い方法があれば教えて頂けないでしょうか。どうぞ宜しくお願いします。

  • 変数について

    Perlを勉強し始めました。 いままでプログラミングを組むことがなかったので、全くの素人 なんですが、いきなり壁に当たりました。 変数のところを勉強してるんですが、 $a=1; $a +=2; print $a みたいな感じで書かれてるのをみて、ふと疑問が。 $aに1を代入する。 $aに、$a+2を代入して、$aを表示ってことですよね。 $b +=2;にして、print $bにしないで、なんで $aに、$a+2を代入するんでしょうか?? $aは、すでに1を代入していて、$aは『1』としてるわけじゃないですか。 その$aに、また$a+2を代入するという発想がさっぱり理解できません。 普通に、$bにすればいいじゃん、その方がすっきりするじゃん、って思うんですが、なんでこんな記述方法にするのかわかりやすく教えていただけたら助かります。

    • ベストアンサー
    • Perl
  • 【Flash8】時間処理、初期化

    getTimer() を使って 時間を変数にいれて1000分の1とかで 割って、ダイナミックテキストで表示させてるのですが それをリセットする方法ありますか? http://fpower.org/old/f4timer.htm こっちは初期化する方法がなくて、 自分の探し方が悪いかもしれませんが 0秒にする方法が見つからなくて。 自分で試した方法が↓ 初期化したい時間を代入している変数 = null; 初期化したい時間を代入している変数 = 0; これでも駄目で。。。 方法知っている方がいらっしゃいましたら 教えてください! お願いします。

    • ベストアンサー
    • Flash
  • 全ての変数を一気にリセットする方法はありますか?

    全ての変数を一気にリセットする方法はありますか? Sub test() Dim i As Integer Dim int1 As Integer Dim int2 As Integer int1 = 1 int2 = 2 For i = 1 To 100 'プロシージャー int1 = 0 'リセット int2 = 0 'リセット Next End Sub みたいなコードがあり、 ループが終わる度に変数をリセットしたい場合 int1 = 0 'リセット int2 = 0 'リセット のように一つ一つ変数に値を入れてリセットするしかないですか? 例のコードは二つしか変数が有りますが 実際100個くらいの変数が有る場合も、 一個一個リセットするしかないのでしょうか? 理想としては、VBAを中断したら全ての変数がリセットされますが それと同じようなコードが有れば、楽だなと思います。

  • ハッシュ変数の怪

    お世話になります。 ハッシュ変数の扱い方について教えて下さい。 <最終的にヤリタイコト> ブログのRSSを読み込み、そのブログ自体のタイトル(1つ)を表示するプログラムを作成したい。 その為に、以下の様なプログラムを作成しています。 ------------------------------------ # 頻繁にRSSを読みに行くのを避けるため、 一時的に$blogfileにRSSファイルを保存しています。 $blogfile="./save/blog.rss"; use XML::RSS; use LWP::Simple; # 保存しているRSSデータを解析 $rss = new XML::RSS; $rss->parsefile($blogfile); # サイト情報を取得 $bigtitle = $rss->{channel}; # そして、これにつづけて、 print $bigtitle->{title}; とすると、ブログ名がキチンと印刷されます。 しかし、この場ではブログ名を表示させたくはなく、一旦、スカラー変数に、このブログ名を代入しておき、後になってから、スカラー変数に代入されたブログ名をprint文で表示させたいのです。 この場合、例えば、 print $bigtitle->{title}; の代わりに $blogtitle=$bigtitle->{title}; とやっても、$blogtitleにブログ名は代入されません。 また、$blogtitleをprint文で表示させてみると、 HASH(0x8ddb5d4) と、いつかどこかで見たような表示になってしまいます。 ●ブログ名をスカラー変数に代入する方法をご教授、よろしくお願い致します。(または、上記の方法以外で、とてもカンタンにブログのRSS情報を元に、そのブログ自体のタイトルのみをスカラー変数に代入するperlプログラムがありましたら、教えて下さい) よろしくお願い致します。

    • ベストアンサー
    • Perl
  • stdpicture型の変数に、、

    stdpicture型の変数に、ファイル名で指定した画像を代入することってできますか? いろいろやってみましたが stdpicture型の変数"pict"にCommonDialog1.FileNameを代入しようと、 pict = CommonDialog1.FileNamepict = LoadPicture(CommonDialog1.FileName) pict = CommonDialog1.FileName などとやってみましたが、やっぱりだめでした。 できるなら、方法を教えてください。 お願いします。

  • binファイルが軽くなる変数への代入処理について

    変数に値を代入する方法はいろいろあるかと思いますが、 コンパイル後に最もバイナリファイルが軽くなる処理はどのような処理でしょうか。 例として、1000バイトのデータを変数に代入する際、 (1)直接一つずつ代入する。 data[0] = 0x00; data[1] = 0x00; ・・・ data[999] = 0x00 (2)変数の定義時に代入(初期化)を行う。 unsigned char data[1000] = {0x00,0x00,・・・・0x00} 等ありますが、どちらの処理が有効でしょうか。 また、その他有効な処理方法等がありましたら、ご教授願います。 グローバル変数として定義するか、かローカル変数として定義するか、 defineで代入値を持つ等、定義時の方法でも違いがありましたら、 教えて頂けると助かります。

  • この変数はどういう扱い?

    とある書籍で簡単なアクセスログの作り方について勉強しているperl初心者です。 下記のコードで2行目までは理解できるのですが、3行目の++$freq[$hour];が理解できずに困っています。ここまでに $freq や@freq という変数や配列など出てきていないのですが、この場合のfreqはどのような命令実行になるのかが理解できずにいます。 while($ln = <FILE>) { ($hour,$min,$host,$refer,$agent) = split(/\t/, $ln); ++$freq[$hour]; } 1行目、ハンドル名FILEで開かれているファイルの1行目を読み込んで変数lnに代入。 2行目、split関数で、$lnの変数値を\t 区分毎に分解し、各変数に代入。 3行目を実行。 最初に戻る。 1行目2回目で、ハンドル名FILEで開かれているファイルの2行目を読み込んで変数lnに代入。 2行目で、split関数で・・・・・・・ ・ ・ 1行目?回目で、ハンドル名FILEで開かれているファイルの?行目から文字列がないので、whileを抜ける。 上記のような形で説明するとすると、3行目ではどのように何が実行されているのでしょうか? アドバイスやご教授をよろしくお願いします。

    • ベストアンサー
    • CGI
  • 変数に値を代入するのに、まずundef、次にNULL文字を足して、それから入れたい値を足すって回りくどくないですか?

    KENTさんの作ったメールフォームのコードをフォローしています。 Clip Mail v1.1です。 http://www.kent-web.com/data/clipmail.html その中で、メールフォームから送られてきたデータを取り入れるサブルーチンに関する質問です。  undef(%in); $in{$key}.="\0";  $in{$key}.=$val; 最初の  undef(%in); はサブルーチン中の冒頭にあり、残り2行とはかなり離れた位置にあります。 これまで私がこういうコードを書く場合、  %in;  $in{$key}=$val; と書いてきました。この他、変数の宣言にはourとかmyとか付けてますけど、KENTさんがこのプログラムを書いた当時はmyはともかくとして、ourを付けることはあまり普及していなかったのではないでしょうか。 さて、C言語などだと変数を用いる前に宣言だけでなく初期化も行っていないといけないわけですが、Perlの場合は初期化されていない変数はundefとして自動認識されます。  undef(%in); と、私がやっているような  %in; の違いは初期化もきちんとしているか、ただ宣言だけで初期化はPerlにお任せしているかの違いです。Perlの仕様上はどちらでもいいでしょう。 分からないのは残りの2行のコードです。  undef(%in); でキチンと初期化してある変数に対して、まず  $in{$key}.="\0"; とします。なんでNULL文字なんか入れないといけないのでしょう。それも単純に  $in{$key}="\0"; ではなくて、  $in{$key}=$in{$key}."\0"; です。 更に3行目で  $in{$key}.=$val; とするわけですが、こんな2行かけた代入を行わなくても、私がこれまでやってきたように  $in{$key}=$val; で実用上の用は足りると思うのですが・・・ 1行目は何となく分かるんです。変数の初期化は、Perlに自動認識の機能があるのを知っていても、他の言語を知っている方は、やはり言語任せに出来ないのではないでしょうか。 残りの2行のコードも多分そんなところだと思います。実用上は私のやり方で足りると思うので。ただC言語なんかでもこんな代入の仕方をしているのを私は見たことがないし、まあ、こんな代入の仕方をしないといけない言語もあるのでしょうが、ではその言語でこのやり方をせずに私がやるような方法を取った場合、どんなエラーが出るのでしょう。 どなたか分かる方、教えていただけないでしょうか。