伝えたいこと
ボッチ演算子はすごい
presenceはすごい
~第1章~ はじまりのコード
子供 「ねぇねぇ父ちゃん!僕の書いたコードを見てよ!」
父親 「おぉ、どれどれ。見せてみろ。」
name = nil
if @account.present? && @account.name.present?
name = @account.name
else
name = '未設定'
end
父親 「アカウントがあったら名前を取得し、名前がなかったら[未設定]の文字を取得したいんやな」
子供 「さすが父ちゃん!見ただけで一瞬でわかっちゃうだ!」
父親 「まぁな。present?
を活用しているのはグッドだ👍nilや空文字など柔軟に判定してくれるからな」
子供 「でしょ!(実はネットに載ってたのコピペしただけだけど...)」
父親 「ただ、もう少し簡単にかけるな。ぼっち演算子って知ってるか?」
子供 「ぼっち演算子..?」
父親 「その様子だとまだ知らないみたいだな。結構便利な書き方だから調べてみ」
子供 「わかった!」
~第2章~ ぼっち演算子
〜数日後〜
子供 「父ちゃん!ぼっち演算子ってすげぇ!」
父親 「おっ。調べてみたのか」
子供 「うん。今回のif文の部分書き換えたから見てよ!」
父親 「おぉ、どれどれ。見せてみろ。」
name = nil
if @account&.name.present?
name = @account.name
else
name = '未設定'
end
父親 「おぉ、いいじゃないか」
子供 「ifの部分がわざわざaccountのpresentを確認しなくても良くなってスッキリした!」
父親 「わかってるじゃないか👏」
子供 「もうこれ以上簡単に書けないよね?」
父親 「そうだなぁ...ちょっと考えさせてくれ」
~第3章~ 父親のpresence無双
〜5分後〜
父親 「さっきのコード考えてみたから、ちょっとこい」
子供 「え?もう何か思いついたの?」
父親 「これみてみろ」
name = @account&.name.present? ? @account&.name : '未設定'
子供 「え?他のコードはどこいったの?」
父親 「さらにこうだ!!!!!✍️」
name = @account&.name.presence || '未設定'
子供 「わかんない!わかんない!父ちゃんの言ってることが!!何ひとつわかんないよ!!!涙」
父親 「すまんすまん。説明するからちょっと落ち着くんだ。まず1つ目のやつから説明するぞ」
name = @account&.name.present? ? @account&.name : '未設定'
父親 「これは三項演算子といってな。@account&.name.present?
この部分が真だったら@account&.name
が呼ばれてそうじゃない場合は'未設定'
が呼ばれるということなんだ」
子供 「....へ、へぇ....(いまいちわからん涙)」
name = @account&.name.presence || '未設定'
父親 「で、だな。2個目のものはその三項演算子すらも使わない書き方で...」
子供 「(えっ。使わないの????)」
父親 「presence
というのはpresent?
に似ているのだが、内容があったら内容を返して、ない場合はnilを返すというものなんだ。」
子供 「う、うん..」
父親 「そうすると、内容があった場合は左側の@account&.name
が採用されて、ない場合は'未設定'
が使われるということになるんだ」
子供 「す、すげぇ...(僕はまだまだなんだな)」
~最終章~ その後の話
父親 「まぁこの辺りは慣れもある。別にお前の最初の書き方も悪いってわけではない。少しずつこういうテクニックを覚えていけばいいさ」
子供 「僕、頑張るよ!」
父親 「よし、今日はラーメンでも食いにいくか🍜」
子供 「やったー!!!」
こうして親子仲良くラーメンを食べに行ったのであった。