Method: Enumerable#group_by

Defined in:
enum.c

#group_by {|obj| ... } ⇒ Hash #group_byObject

Groups the collection by result of the block. Returns a hash where the keys are the evaluated result from the block and the values are arrays of elements in the collection that correspond to the key.

If no block is given an enumerator is returned.

(1..6).group_by { |i| i%3 }   #=> {0=>[3, 6], 1=>[1, 4], 2=>[2, 5]}

Overloads:

  • #group_by {|obj| ... } ⇒ Hash

    Yields:

    • (obj)

    Returns:



750
751
752
753
754
755
756
757
758
759
760
761
762
# File 'enum.c', line 750

static VALUE
enum_group_by(VALUE obj)
{
    VALUE hash;

    RETURN_SIZED_ENUMERATOR(obj, 0, 0, enum_size);

    hash = rb_hash_new();
    rb_block_call(obj, id_each, 0, 0, group_by_i, hash);
    OBJ_INFECT(hash, obj);

    return hash;
}