Method: Hash#transform_values!

Defined in:
hash.c

#transform_values! {|value| ... } ⇒ Hash #transform_values!Object

Invokes the given block once for each value in hsh, replacing it with the new value returned by the block, and then returns hsh. This method does not change the keys.

h = { a: 1, b: 2, c: 3 }
h.transform_values! {|v| v * v + 1 }  #=> { a: 2, b: 5, c: 10 }
h.transform_values!(&:to_s)           #=> { a: "2", b: "5", c: "10" }
h.transform_values!.with_index {|v, i| "#{v}.#{i}" }
                                      #=> { a: "2.0", b: "5.1", c: "10.2" }

If no block is given, an enumerator is returned instead.

Overloads:

  • #transform_values! {|value| ... } ⇒ Hash

    Yields:

    • (value)

    Returns:



3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
# File 'hash.c', line 3165

static VALUE
rb_hash_transform_values_bang(VALUE hash)
{
    RETURN_SIZED_ENUMERATOR(hash, 0, 0, hash_enum_size);
    rb_hash_modify_check(hash);

    if (!RHASH_TABLE_EMPTY_P(hash)) {
        rb_hash_stlike_foreach_with_replace(hash, transform_values_foreach_func, transform_values_foreach_replace, 0);
    }

    return hash;
}