Sorry, that was bad netiquette on my part. I sometimes get focused on my
own thoughts and understanding and don't speak (or write) in a way that fully
explains the situation to an outside observer.
Here is an example I found on stackoverflow (
https://stackoverflow.com/questions/5215713/ruby-what-is-the-easiest-method-to-update-hash-values)
h = { 1 => 10, 2 => 20, 5 => 70, 8 =>90, 4 => 34 }
which the writer would like to change to:
h = { 1 => foo(10), 2 => foo(20), 5 => foo(70), 8 => foo(90), 4 => foo(34) }
and the "best" answer was the line above:
hash.update(hash) { |key, value| value * 2 }
My confusion was really about the "value * 2", the answer's author wrote:
"Note that we're effectively merging hash with itself. This is
needed because Ruby will call the block to resolve the merge
for any keys that collide, setting the value with the return
value of the block."
I was wondering why this would be better/different than just doing an
update to the hash and key. And what is meant by 'resolving the merge
for any keys that collide'.
I was confused about blocks AND how to use the update method, but
this bit had me doubly confused.
Now that I've had time to step and back and think about it, I may just
be overthinking and this bit of code could be meaningless, in a sense.
"Every artist was first an amateur." - Ralph Waldo Emerson