south37の日記

ちょろっとメモりたい事とかを書く用。もうちょっとちゃんとしたブログもあります。http://south37.hatenablog.com/

rubyのEnumertor

https://www.ruby-forum.com/topic/934794 にあるみたいに、Enumeratorにwith_indexとかつけてさらにEnumeratorを返すようなメソッドを呼ぶとき、|(e, i), j|みたいにカッコで囲んで前の要素を表現出来る。

例えば、

1.upto(10).each.with_index.with_index do |(a, i), j|
  p "a: #{a}, i: #{i}, j:#{j}"
end
=>
a: 1, i: 0, j:0
a: 2, i: 1, j:1
a: 3, i: 2, j:2
a: 4, i: 3, j:3
a: 5, i: 4, j:4
a: 6, i: 5, j:5
a: 7, i: 6, j:6
a: 8, i: 7, j:7
a: 9, i: 8, j:8
a: 10, i: 9, j:9

みたいな感じ。with_indexしてからinjectとか出来てけっこう便利。

matched_tags.each_with_index.inject(''){|str, (tag, i)| str + "| #{tag[:name]} | #{tag[:articles_num]} | #{i+1} |\n"}

で、markdownのテーブルとかさくっと作れる。