Ruby で #each_with_self を書いてみた
これを簡単に書けるようにしてみたくて書いてみた。
class Enumerator def with_self &block with_object self, &block end end module Enumerable def each_with_self &block each_with_object self, &block end end [1, 2, 3].each_with_self { |it, myself| p "#{it} : #{myself.class}" } # => # "1 : Array" # "2 : Array" # "3 : Array" p [1, 2, 3].each_with_self.map { |it, myself| it + myself.size } # => [4, 5, 6]
最初は Enumerator
とか使って実装してみたんですが、よくよく考えると Enumerable#each_object_with
使えばいいことに気づいて簡素な実装になりました。
普通に便利そうではある。