self.send(pred)がtrueならばselfを、そうでないならnilを返すメソッド
何をいっているのかというと、こういうことです
rubyで、obj.send(pred) がtrueならばselfを、装で無い場合はnil を返すメソッド欲しい
— ⁰⁰⁰⁰null (@yuroyoro) August 28, 2014
foo.present? ? foo : other みたいなの書くのダルいので
— ⁰⁰⁰⁰null (@yuroyoro) August 28, 2014
class Object def filter(&pred) (yield self) ? self : nil end end
書いてみた。
foo".filter(&:present?) # => "foo" "".filter(&:present?) # => nil
ようは、 str.present? ? str : other
みたいなやつを書きやすくするためのものです
str = "hoge" str.filter(&:present?) || "fuga" # => "hoge" str = "" str.filter(&:present?) || "fuga" # => "fuga"
よい名前が思い浮かばなかった(´・ω・`)
8/29追記
ActiveSupportにObject#presenceというのがあるそうだ。present?だけならこれで充分。自分は、任意のlambdaを渡したい場合があるのでこれも無駄にはならない、はず。
@yuroyoro
http://t.co/rhQicrvuWW
— irxground (@irxground) August 28, 2014
8/29さらに追記
というか、ずいぶん前に自分で既に書いてgemにしてあったし俺は一体何をやっているんだ……。
おそらく上位存在からの記憶操作が行われた可能性がある……!!