Functional Ruby often transforms a collection through small chained steps.

Map, Filter, Reduce

map_filter_reduce.rb
threshold = 
numbers = [1, 2, 3, 4, 5]

filtered = numbers.select { |number| number > threshold }
doubled = filtered.map { |number| number * 2 }
total = doubled.reduce(0) { |sum, number| sum + number }

filtered_text = filtered.join("/")
doubled_text = doubled.join("/")

puts "threshold=#{threshold}"
puts "filtered=#{filtered_text}"
puts "doubled=#{doubled_text}"
puts "total=#{total}"
threshold = 
numbers = [1, 2, 3, 4, 5]

filtered = numbers.select { |number| number > threshold }
doubled = filtered.map { |number| number * 2 }
total = doubled.reduce(0) { |sum, number| sum + number }

filtered_text = filtered.join("/")
doubled_text = doubled.join("/")

puts "threshold=#{threshold}"
puts "filtered=#{filtered_text}"
puts "doubled=#{doubled_text}"
puts "total=#{total}"
threshold = 
numbers = [1, 2, 3, 4, 5]

filtered = numbers.select { |number| number > threshold }
doubled = filtered.map { |number| number * 2 }
total = doubled.reduce(0) { |sum, number| sum + number }

filtered_text = filtered.join("/")
doubled_text = doubled.join("/")

puts "threshold=#{threshold}"
puts "filtered=#{filtered_text}"
puts "doubled=#{doubled_text}"
puts "total=#{total}"
map filter reduce `select`, `map`, and `reduce` can express filtering, transforming, and accumulating without manual index tracking.