• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:変数について)

変数の使い方についての疑問

このQ&Aのポイント
  • Perlを勉強中の初心者が変数の使い方について疑問を持っています。
  • 特に、変数に値を代入する際に、既に値が入っている変数に再度値を代入する必要性について理解できません。
  • なぜ、変数に既に存在する値を加算した結果を再度その変数に代入する必要があるのでしょうか?

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

  • ベストアンサー
  • makoji
  • ベストアンサー率25% (1/4)
回答No.2

すみません。質問の意図を読み間違えていました。  $a+=2; という式において、  $a=1; と既に値を入れている$aでこの計算をしなくても、  $b+=2; とすれば$aの初期値も残せてスッキリするということをおっしゃりたいのですね。 おっしゃる通りです。 でもメモリーがもったいないので、$aの初期値を後々使わない場合は上書きするのが良いとされています。 もっともメモリーの節約のためとはいえ、やみくもに同じ変数を使いまわしすると、後でプログラムを読み返した時にその変数が何を意味しているのか分からなくなります。 ですから状況に応じて  $a=1;  $a+=2; とやったり、  $a=1;  $b=1;  $b+=2; とやったりします。

anzendai11
質問者

お礼

メモリの節約のためだったんですか。 なるほど。 ありがとうございました。

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

意味がよくわからないんだけど, そう思う人は ML みたいな関数型言語がいいかもしれない.

  • makoji
  • ベストアンサー率25% (1/4)
回答No.1

 $a=0; for($i=0;$i<$x;$i++) {  $a+=2;  }    print $a; というコードを考えてみます。 初期値が0である$aに  $a+=2; を$x回行って、その結果を表示するものです。  $a+=2; を  $b=$a+2; と記述した場合、最初のループで  $b=$a+2; ですから、2回目のループでは $c=$b+2; とでも書くべきでしょうか。以後  $d=$e+2;  $e=$f+2; という風に、ループする回数分だけ式を書かなくてはならなくなります。 コードがそれだけ冗長になるのも嫌ですが、ループする回数がプログラミングの時点で分かっているならともかく、例出のコードでは$xという変数です。$xは5回かもしれないし、10回かもしれません。それでは  print の後にどの変数を指定すればいいのでしょう。  $a+=2; という風に、常に$aを使っているからこそ、  print $a; と簡潔に記述できるわけです。