myとlocalについて自分なりに理解していること
Perlを独学で勉強している私ですが、初期のころはmyとlocalって何が違うのかさっぱりでしたが、最近はいろいろ本を読んで理解してきたと自分では思ってます。
独学し始めの当時、「初めてのPerl 第3版」の75ページの
もしタイムマシンに乗って1986年に戻ることができたら、Larryに会って、localの代わりに"save"という名前を付けるように忠告するだろう
という一文は全く理解できなかった。
業界がSIerで仕事で使っている言語はJavaで、C言語とか他の言語をやったことのない人間からすると、変数のスコープの感覚はmyは理解し易いく、変数のスコープのやり方に他の方法があるなんて想像もしていなかった。
だから、自分の場合、理解するのに時間がかかった。
でも、「Effective Perl」を読んで、ある程度理解できた。しかしmyとlocalの挙動を全て理解しているわけではないが、悩んでいるわけでもない。
ってなわけで、自分なりに理解していることを書きます。
- myの場合、スコープが異なっていると変数の名前は一緒だけど、実際は違うモノ。
- localの場合、スコープが異なっていても変数の名前は一緒だと、同じモノ。
localは、同じ変数名だとスコープが異なっていても同じ変数のことを意味しているので、格納してある値を一時的にどっか別の場所(?)に保存(save?)しておいて、同じ変数を使いまわしているって感じですかね。
だから、localじゃなくてsaveという名前のほうがいいと言っていたんだと、今は理解しています。
もし、ご意見ございましたら、コメントくださいませ。
Effective Perl (ASCII Addison Wesley Programming Series)
posted with amazlet on 08.03.16