以下の内容はhttps://yuroyoro.hatenablog.com/entry/2014/08/28/170750より取得しました。


self.send(pred)がtrueならばselfを、そうでないならnilを返すメソッド

何をいっているのかというと、こういうことです


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を渡したい場合があるのでこれも無駄にはならない、はず。


8/29さらに追記

というか、ずいぶん前に自分で既に書いてgemにしてあったし俺は一体何をやっているんだ……。
おそらく上位存在からの記憶操作が行われた可能性がある……!!

yuroyoro/lambda_driver · GitHub




以上の内容はhttps://yuroyoro.hatenablog.com/entry/2014/08/28/170750より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14