こんなコードを書いていたとき、
def process_list con
con.query("show full processlist").select{|row| row['Info'] }.map{|row| row['Info'] }.to_enum
end
このままではEnumerable#selectとEnumerable#mapの分で2回ループをまわすことになり効率が悪いのでなにかないかと思っていたところ、ブロックつきのEnumerable#grepを使う方法があるようだ.
def process_list con
con.query("show full processlist").grep(->(row){ row['Info'] }){|row| row['Info'] }.to_enum
end
なかなか目から鱗だったのでメモしておく.