From: "boris_stitnicky (Boris Stitnicky)" Date: 2013-06-03T12:18:26+09:00 Subject: [ruby-core:55267] [ruby-trunk - Feature #8478] The hash returned by Enumerable#group_by should have an empty array for its default value Issue #8478 has been updated by boris_stitnicky (Boris Stitnicky). @marcandre: What do you mean by incompatibility? That the behavior is not the same as before, or something deeper? ---------------------------------------- Feature #8478: The hash returned by Enumerable#group_by should have an empty array for its default value https://bugs.ruby-lang.org/issues/8478#change-39660 Author: phiggins (Pete Higgins) Status: Open Priority: Normal Assignee: Category: Target version: Without this patch, nil checks might need to be done on the return value of Enumerable#group_by: $ cat test_group_by.rb a = [1, 2, 3, "a", "b"] g = a.group_by {|o| o.class } puts "Fixnums: #{g[Fixnum].size}" puts "Strings: #{g[String].size}" puts "Arrays: #{g[Array].size}" $ ruby test_group_by.rb Fixnums: 3 Strings: 2 test_group_by.rb:6:in `
': undefined method `size' for nil:NilClass (NoMethodError) This patch adds a default value of an empty array to the hash returned by Enumerable#group_by, so the script above will work: $ ./ruby -I.:lib test_group_by.rb Fixnums: 3 Strings: 2 Arrays: 0 -- http://bugs.ruby-lang.org/