ruby methods that either yield or return Enumerator
The core libraries insert a guard return to_enum(:name_of_this_method, arg1, arg2, …, argn) unless block_given?. In your case: class Array def double return to_enum(:double) unless block_given? each { |x| yield 2*x } end end >> [1, 2, 3].double { |x| puts(x) } 2 4 6 >> ys = [1, 2, 3].double.select { |x| x > 3 … Read more