11 ms·
Anti-Pattern: Iteratively Building a Collection
- radiospiel 13y agoThere are some issues with the "good" examples; e.g. def signer_keys_and_uids signers.inject({}) do |result, signer| result.merge(signer.key_id => signer.uids) end end builds not only one but two new hash objects on each iteration, while the "bad" code does neither. Array to Hash is probably best done using Hash[]
- evilstreak 13y agoThe signer_keys_and_uids example can be much cleaner using Enumerator#with_object: signers.map.with_object({}) { |signer, result| result[signer.key_id] = signer.uids }