elseif・switchは撲滅して連想配列
前回に引き続き、今回も同じテーマで。
以下、憎くて仕方ないelseif文。
id = 'nogi' if id == 'nogi' then name = '乃木坂46' elsif id == 'keyaki' then name = '欅坂46' else name = 'ソニーミュージック' end p name # 乃木坂46
本当にキモい。
たいした処理でもないのに、なぜ、こんなに行数を使うのか理解できない。
そこで、今日、良い記法を思いついた。
[ Ruby ]
id = :keyaki name = { nogi: '乃木坂46', keyaki: '欅坂46', }[id] || 'ソニーミュージック' p name # 欅坂46
存在しない id を指定すると、左辺が nil になる。
結果、右辺が実行される。短絡評価。
PHPで書くと、
<?php $id = 'keyaki'; $name = [ 'nogi' => '乃木坂46', 'keyaki' => '欅坂46', ][$id] ?? 'ソニーミュージック'; echo $name; // 欅坂46
PHP7の ??(Null合体演算子)を使うとスマート。
うーん、かなりイケてると思うんだが…。