Ruby での each_with_object の機能

概要

each_with_object は何をするのでしょうか?どこでオプトを取得しますか? https://translate.google.com/translate?hl=ja&sl=en&tl=ja&u=https://github.com/bodrovis/lokalise_manager/blob/master/lib%2Flokalise_manager%2Ftask_definitions%2Fbase.rb#L23

primary_opts = global_config
                 .singleton_methods
                 .filter { |m| m.to_s.end_with?('=') }
                 .each_with_object({}) do |method, opts|
  reader = method.to_s.delete_suffix('=')
  opts[reader.to_sym] = global_config.send(reader)
end
# *your text*

Ruby Webサイトの後ろのドキュメントにアクセスしてみました

解決策

each_with_object は、 each と同様の方法で列挙可能オブジェクトを反復します。

ただし、追加のオブジェクト (この例では空のハッシュなど) をブロックに渡すことができ、最後にそのオブジェクトが返されます (各反復子ではなく)。

これは簡略化した例です。の代わりに

hash = {}
[1, 2, 3].each do |number|
  hash[number] = number * number
end
hash
#=> { 1 => 1, 2 => 4, 3 => 9 }

each_with_object を使用すると、次のように記述できます。

[1, 2, 3].each_with_object({}) do |number, hash|
  hash[number] = number * number
end
#=> { 1 => 1, 2 => 4, 3 => 9 }