孤独プログラマー譚

孤独死が近い。

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合体演算子)を使うとスマート。


うーん、かなりイケてると思うんだが…。