method
transform_values
ruby latest stable - Class:
Hash
transform_values()public
Returns a new hash with the results of running the block once for every value. 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: "1", b: "2", c: "3" } h.transform_values .with_index {|v, i| "#{v}.#{i}" } #=> { a: "1.0", b: "2.1", c: "3.2" }
If no block is given, an enumerator is returned instead.
static VALUE
rb_hash_transform_values(VALUE hash)
{
VALUE result;
RETURN_SIZED_ENUMERATOR(hash, 0, 0, hash_enum_size);
result = rb_hash_new_with_size(RHASH_SIZE(hash));
if (!RHASH_EMPTY_P(hash)) {
rb_hash_foreach(hash, transform_values_i, result);
}
return result;
}