変数の初期値
Posted feedbacks - Perl
Perlが無かったので投稿します。 ……って、あれ?
1 2 | my $var1 = (!defined $var1) ? 'foo' : $var1;
my $var2 = 'foo' unless defined $var2;
|
use strict; がない場合
1 2 | #my $var1 = 'foo' ;
my $var2 = $var1 || 'bar';
|
> my $var ||= 'foo';
>というコードは$varという変数がnilのときだけ'foo'を代入するもので
であれば余り問題は無いのですが,このコードは以下のコードと同じ意味になります。
my $var = $var || 'foo'; #||は短絡演算子
問題中にある様に変数の宣言と一緒にやる場合には然程問題になりませんが,perlでは0は偽として評価されるので,値が設定されていない場合に初期値を設定する意図で使用するケースで,以下の様に問題が出る場合があるのです。
my $var;
[..snip..]
$var = 0;
[..snip..]
$var ||= 1; #0が設定されている場合は0のままとするつもり
>というコードは$varという変数がnilのときだけ'foo'を代入するもので
であれば余り問題は無いのですが,このコードは以下のコードと同じ意味になります。
my $var = $var || 'foo'; #||は短絡演算子
問題中にある様に変数の宣言と一緒にやる場合には然程問題になりませんが,perlでは0は偽として評価されるので,値が設定されていない場合に初期値を設定する意図で使用するケースで,以下の様に問題が出る場合があるのです。
my $var;
[..snip..]
$var = 0;
[..snip..]
$var ||= 1; #0が設定されている場合は0のままとするつもり



takuya_1st
#5927()
Rating-4/12=-0.33
[ reply ]