Skip to content
Enumerable
step 1/6

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 Enumerableeach 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…