masato日記

勉強ノート

「シャチ泳ぎ」という演算子の使い方を試してみた

Effective Perl第2版をKindleで読んでいる。 今日読んでいて「シャチ泳ぎ」というおもしろい名前の記法が紹介されていた。
たとえば、こういう感じのやつ。

my $hoge //= 'fugaa!';

ここではDifined-or演算子(//)の直後に代入演算子(=)が使われている。
感覚的に$hogeがundefなら右辺の値が代入されるのだな、という察しがつく。

# difined-or演算子
# 左辺がundefであれば右辺を代入する
my $a = undef;
$a //= 'un-undef';
print $a; # 'un-undef'

この書き方は||を使ってもできる。

# 左辺が偽であれば右辺を代入する
# Perlで偽となるのは、'', 0, '0', undefの4つ
my @arr = ('', 0, '0', undef, 'True');
my @converted = map { $_ ||= 'hoge!' } @arr;
print join ' ', @converted;

以上がシャチ泳ぎの中身だった。
Effective Perlには、上記ふたつの演算子を正しく使うために理解しておかなければならない、Perlで偽となる値についてもはっきりと書かれていてとてもいい。

Effective Perl 第2版

Effective Perl 第2版

Kindleアプリ使える

ところでKindleアプリはよくできていて、スマホでもよみやすい。
ハイライトをタッチ操作できて、自動でインデックスが作成されるので、マークした箇所はあとからかんたんに見返すことができる。
コードブロックもマークできる。
紙の本ならふせんをつけるところだが、ふせんだとどれがどれだかわからなくなるので、検索性は電子本がすぐれていると実感した。 液晶で読むのが人によっては負担になる点はあるが、アプリで暖色にしたり色を反転できたりするうえ、フォントサイズ、行間、余白まで設定できるので、だいぶいい。   目に対するやさしさでは電子ペーパーに分があるが、応答性の良さではまだまだ液晶の圧勝なので、1時間の読書程度ならスマホで便利に読むのはアリという気がする。