to_proc

to_procメソッドがあるオブジェクトならば、手続きオブジェクトとしてメソッドに渡すことができます。to_procメソッドはProcオブジェクトを返します。

class Rubyco
    def to_proc
        return proc {|k|
            print "#{k} (#{k.class}), "
        }
    end
end

class Array
    def my_each
        for e in self
            yield(e)
        end
    end
end

def print_them(a)
    a.my_each(&Rubyco.new)
    print "\n"
end

print_them([100, 200, 300])
# => 100 (Fixnum), 200 (Fixnum), 300 (Fixnum),

print_them([123, 3.14, "Hello", 1234567890])
# => 123 (Fixnum), 3.14 (Float), Hello (String), 1234567890 (Bignum),