Ruby Version of C# using keyword

class Resource1
    def dispose
        @disposed = true
    end
    
    def disposed?
        @disposed
    end
end


module Kernel
    def using1(resource)
        begin
            yield
        ensure
           resource.dispose
        end
    end
end

r = Resource1.new
using1(r) {}
puts r.disposed?

r1 = Resource1.new

begin
using1(r1) {raise Exception}
rescue Exception
end

puts r1.disposed?

猜你喜欢

转载自caerun.iteye.com/blog/2314936