夏が終わったと感じる瞬間って、どんな時?

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にすればいいじゃん、その方がすっきりするじゃん、って思うんですが、なんでこんな記述方法にするのかわかりやすく教えていただけたら助かります。

A 回答 (3件)

すみません。

質問の意図を読み間違えていました。

 $a+=2;
という式において、
 $a=1;
と既に値を入れている$aでこの計算をしなくても、
 $b+=2;
とすれば$aの初期値も残せてスッキリするということをおっしゃりたいのですね。

おっしゃる通りです。

でもメモリーがもったいないので、$aの初期値を後々使わない場合は上書きするのが良いとされています。

もっともメモリーの節約のためとはいえ、やみくもに同じ変数を使いまわしすると、後でプログラムを読み返した時にその変数が何を意味しているのか分からなくなります。

ですから状況に応じて
 $a=1;
 $a+=2;
とやったり、
 $a=1;
 $b=1;
 $b+=2;
とやったりします。
    • good
    • 0
この回答へのお礼

メモリの節約のためだったんですか。

なるほど。

ありがとうございました。

お礼日時:2009/07/24 08:45

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

    • good
    • 0

 $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;
と簡潔に記述できるわけです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!