🗂
Grow.rbのeach_with_object問題を解いてみる
Grow.rbとは:
Ruby力を高めたいRubyistたちが、コードを書いたりちょっとマニアックな内容を学んだりするコミュニティです。
オリジナルのeach_with_object
メソッドを作ってみようというテーマです。
テストコードはこちら。
書いた回答がこちら。
module Enumerable
def my_each_with_object(arg, &block)
result_array = []
if arg.instance_of?(Array)
each do |num|
result_array << block.call(num, [])
end
result_array.flatten
elsif arg.instance_of?(String)
each do |str|
result_array << block.call(str, '')
end
arg.concat(result_array.join)
end
end
end
生成AIにリファクタリングしてもらったコードがこちら。
module Enumerable
def my_each_with_object(obj)
each do |element|
yield(element, obj)
end
obj
end
end
なぜ最初からこのコードが書けなかったのかというほど、無駄のないコード。納得感がありすぎる。
Discussion