Reading — step 1 of 6
Learn
~1 min readExceptions and Enumerable
Enumerable is the module that gives Ruby its iteration superpowers. Any class that defines each and includes Enumerable gets ~50 methods for free.
Most-used:
nums = [3, 1, 4, 1, 5, 9, 2, 6]
nums.map { |n| n * 2 }
nums.select { |n| n > 2 } # filter
nums.reject { |n| n > 2 } # opposite
nums.find { |n| n > 4 } # first match
nums.count { |n| n > 2 }
nums.any? { |n| n > 8 }
nums.all? { |n| n > 0 }
nums.none? { |n| n > 100 }
nums.min; nums.max; nums.sum
nums.sort
nums.sort_by { |n| -n } # custom key
nums.uniq
nums.reduce(0) { |acc, n| acc + n } # also: reduce(:+)
nums.group_by { |n| n.even? } # {true: [...], false: [...]}
nums.partition { |n| n.even? } # [evens, odds]
nums.zip([10, 20, 30]) # [[3,10], [1,20], [4,30]]
nums.each_with_index { |n, i| ... }
nums.tally # {3=>1, 1=>2, ...}
Hash also includes Enumerable — each yields [key, value] pairs:
{a: 1, b: 2}.map { |k, v| [k, v * 2] }.to_h # {a: 2, b: 4}
This is why Ruby code reads so dense — most data manipulation is one chained call.
Discussion
Ask a question, share an insight, or help someone who’s stuck.
Sign in to post a comment or reply.
Loading…