複数の変数をバスっと初期化したい場合
undefでいいなら、楽なんですが。
my ($a,$b,$c .....);
そして、 undefじゃなくって 、 0 か 文字列 をパスパスと入れたい場合。
まぁ、めんどくさくもこうやるしかないのですかね?
my $a = 0;
my $b = 0;
my $c = 0;
とかやるのめんどい。
my $c = $d = $e = 0;
これはもう可読性が/(^o^)\
まぁそもそもJavaみたいに、型宣言したいって気持ちが強いんですけど。。。
そうすると初期値がそれぞれ自動で違うもの入れてくれるから。
int a, b, c ....;
boolean f,v,g ....;
char hoge, fuga....;
【インスタンス変数(メンバ変数)の型ごとのデフォ値】
type | default value |
---|---|
void | |
boolean | false |
char | 0000 |
byte, shot, int,long | 0 |
float, double | 0.0 |
参照型 | null |
詳しくは この辺
話を戻して、Perlの変数初期化の話。
そんなこんなでいろんなとこ見てたらこんなの見つけました。
my ($a, $b) = 0;
これは、右辺を配列と読んで、その要素を昇順に $a, $b へと入れている ということでいいのでしょうか?
で、右辺は 0 という値。。。。
$a には 0 が入り、$b にはundefが入るのではなかろうか?
みてみたらやはりこうでした。
sub main {
my ( $a, $b ) = 0;
print Data::Dumper->Dump([$a], ['$a']);
print Data::Dumper->Dump([$b], ['$b']);
}
[oniku@yakiniku1 mino]$ perl test_mino.pl
$a = 0;
$b = undef;
そりゃそうだ。。。
だから、こうすればいいはず
1行にまとめられて楽ではある。
↓↓↓↓
my ($a, $b) = ( 0, 0 );