眠れなくて暇だったので、思い付きをgemにしてみた。
要はActiveSupportのtryの変形バージョンで、tryでチェインするとなんか見づらいから、ラップしてメソッドチェインそのまま使えるようにしてみた。
ついでにKernelモジュールを拡張して、Haskellのmaybe関数っぽい感じで中身かデフォルト値を取ってブロックに渡せるようにした。というか、むしろこっちがやりたかった。
ググれば、絶対に車輪の再発明であること確実なのだが、暇潰しだったので、そこはスルー。
こんな感じになる。
m1 = "a".to_maybe.upcase.gsub(/A/, "B") maybe(m1) do |str| puts str # => B end m2 = nil.to_maybe.upcase.gsub(/A/, "B") maybe(m2) do |str| puts str # No Execute end maybe(m2, "a") do |str| puts str # => a end