Skip to content

Instantly share code, notes, and snippets.

@moro
Created October 21, 2011 10:29
Show Gist options
  • Save moro/1303529 to your computer and use it in GitHub Desktop.
Save moro/1303529 to your computer and use it in GitHub Desktop.
Symbol#<<
class Symbol
def <<(args)
lambda {|x| x.send(self, *args) }
end
end
p [{:a => 1}].find(&:key? << :a) # => {:a => 1}
p [{:a => 1}].find(&:key? << :b) # => nil
p [["abc", "efg"], ["foo", "bar"]].map(&:join << "-") # => ["abc-efg", "foo-bar"]
p ["abc", "efg", "foo", "bar"].map(&:sub << ["a", "A"]) # => ["Abc", "efg", "foo", "bAr"]
@moro
Copy link
Author

moro commented Oct 21, 2011

先客がいた...

@knu
Copy link

knu commented Oct 21, 2011

SymbolはString的側面もあるので、Symbol#<<はちょっと自明さに欠ける気がします。

Procに部分適用メソッド(演算子)があってもいいかなとは思いますが、
結局、ふつうに書いてもいいかなという気がしてきました…

p [{:a => 1}].find(&->x{x.key?:a})

@shugo
Copy link

shugo commented Oct 21, 2011

もっと普通に↓の方が短いような…

p [{:a => 1}].find{|x|x.key?:a}

@knu
Copy link

knu commented Oct 21, 2011

{|x|x....} はなんかダブリ感があるんですが ->x{x...} は意外とそうでもないなと思った。なぜだろう

@knu
Copy link

knu commented Oct 21, 2011

ああ、自分は { |x| x... } とスペースを入れる派だからだ!

@knu
Copy link

knu commented Oct 21, 2011

->x { x.... } はけっこうボーダーラインww すんません個人的感覚の話でww

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment