||=とdoを使ってキャッシュ
たとえばメンバ変数にオブジェクトとかをキャッシュするときに、
sub method { my $self = shift; return $self->{hoge_obj} ||= Hoge->new; }
とか良くやるんだけど、前処理とかが必要な場合はdo使って
sub method { my $self = shift; return $self->{hoge_obj} ||= do { ### 前処理 Hoge->new; }; }
こんな感じで良くやるんだけどもコレって一般的なのかな?
前にどっかのソースで、
sub method { my $self = shift; my $code = sub { ### 前処理 return Hoge->new; }; return $self->{hoge_obj} ||= $code->(); }
っていう感じのを見たんだけどどっちがいいんだろーか。
僕的にはdoの方が余計な処理をしないので好きなんだけども。