challenge 変数の初期値

WEB+DB 43のRecent Perl Worldを読んで知りました。

変数を初期化するに当たってPerlでは
my $var ||= 'foo';
とかきます。この不備を補うためPerlの5.10には
Defined-or演算子が実装されたそうです。
$zero //= 25;
このような変数のデフォルト設定を行う方法を各種言語ではどうかくのでしょうか。


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のままとするつもり

Index

Feed

Other

Link

Pathtraq

loading...