nil safeなmethod chainをどう書くか

rubyを書くときはmethod chainでつなげていくことが多いと思いますが、途中でnilが出てきたとき困ってしまいます。例えば

str.split("/").last.split(".").last

のようなコードがあったときにstrに空文字が入ると途中でnilが出てきて死にます。clojureだとnil safeなthreding macroというのが公式にあって、nilが途中できたら計算を途中で止めてnilを返させることができます。

rubyではどうやるのかと思っていて、ちょっと探した感じだとgemのtryというやつを使うとよさそうです。

Object#sendっぽい感じで使えるみたい。

require 'active_support/core_ext/object/try'
s.try(:strip)

1週回って、あーこれmaybeモナド(失敗するかもしれない計算をつなげるやつ)だわーとなるまでには時間はかかりませんでした。

すごいHaskellたのしく学ぼう!

すごいHaskellたのしく学ぼう!