メソッドチェーンの p デバッグ? それ tap でできるよ
「リファクタリング Ruby エディション」によると、一時変数は極力排除した方がいいらしい。
メソッドチェーンを使えば、結果をいちいち変数に覚えなくても最終結果だけ得られる。
s.split(/\n/).each_slice(2).map(&:join)
でも、結果が意図したものと違ったら、どこでおかしくなったのか分からない。
じゃあメソッドの結果を変数に覚えて p デバッグする?
s = s.split(/\n/) p s # >> ["こんにちは", "", "", "", "あしたは", "", "すずしくなる", "", "はず、としんじます", "", "", "", "では、", "", "さようなら", "", "", "", "/~~~"] s = s.each_slice(2) p s # >> #<Enumerator:0x100c78d0> s = s.map(&:join) p s # >> ["こんにちは", "", "あしたは", "すずしくなる", "はず、としんじます", "", "では、", "さようなら", "", "/~~~"]
一時変数なくても、それ tap でできるよ。
s .tap{|x|puts "orginal: #{x.inspect}"} .split(/\n/) .tap{|x|puts "split: #{x.inspect}"} .each_slice(2) .tap{|x|puts "each_slice: #{x.inspect}"} .map(&:join) .tap{|x|puts "map(&:join): #{x.inspect}"} # >> orginal: "こんにちは\n\n\n\nあしたは\n\nすずしくなる\n\nはず、としんじます\n\n\n\nでは、\n\nさようなら\n\n\n\n/~~~\n" # >> split: ["こんにちは", "", "", "", "あしたは", "", "すずしくなる", "", "はず、としんじます", "", "", "", "では、", "", "さようなら", "", "", "", "/~~~"] # >> each_slice: #<Enumerator:0x100c9e8c> # >> map(&:join): ["こんにちは", "", "あしたは", "すずしくなる", "はず、としんじます", "", "では、", "さようなら", "", "/~~~"]