変数の初期値
Posted feedbacks - R
Perlではmy宣言された変数はそもそも未定義のはずですから、
"my $var ||= 'foo';"というコードの意図は私もうまく解釈できません。
||=や//=(Defined-or)を使いそうなシチュエーションとしては、
可変のパラメーターを使用して変数の初期化を行いたいような場合
(パラメーターがセットされていればその値で初期化し、セットされていなければ
デフォルトの値を使用する)
なのかな?とお題を解釈しました。
sub function{
my $var = shift;
$var ||= 'foo';
}
とか。
「不備」というのは、$varに"0"や空文字が入っていた場合でも
論理値が偽になってしまうので「未定義」と区別が出来ない・・・
ということでいいのですよね?
(BBSなどで、名前を「0」にすると「名前を入れてください」というエラーになるものが
結構あったような)
Rでは、missing()を使って引数に値がセットされているかどうかをチェックします。
Perlみたいに1演算子で・・・という便利なものはなさそうです。
1 2 3 4 5 6 7 8 9 10 11 12 13 | f <- function(var){
if(missing(var)){
var <- 'foo'
}
var
}
> f()
[1] "foo"
> f("")
[1] ""
> f(0)
[1] 0
|

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