my $a = { hoge => 'fuga' };
のように書くわけですが、とあるPerlコードを覗いていたとき、my $a = +{ hoge => 'fuga' };
のような記述を見かけたわけです。ぱっと見て、'+'が何なのかよく解らなかったので、Twitterで聞いてみたところ、
- 明示的にハッシュリファレンスを渡している
- 単項の+はNOPなのでB::Deparseで同一になるはず
実際に確認してみました。
スクリプトは以下のように記述。
use warnings;
use strict;
use Data::Dumper;
my $a = { hoge => 'fuga' };
my $b = +{ hoge => 'fuga' };
B::Deparseに通してみたところ。
$ perl -MO=Deparse ./hoge.pl
use Data::Dumper;
use warnings;
use strict 'refs';
my $a = {'hoge', 'fuga'};
my $b = {'hoge', 'fuga'};
たしかに同一ですね。syntax-sugarと思ってOKそうです。
0 件のコメント:
コメントを投稿