From: "Schüle Daniel" Date: 2006-07-30T22:15:08+09:00 Subject: mimic File.open pattern Hello all, open is singleton method of File and can be used in two ways # 1 way f = File.open("data") f.readline until f.lineno == 10 puts f.readline f.close # 2 way File.open("data") do |f| f.readline until f.lineno == 10 puts f.readline end I am trying to mimic this with my own classes irb(main):001:0> class Resource irb(main):002:1> @@cnt=0 irb(main):003:1> def initialize irb(main):004:2> @id = @@cnt irb(main):005:2> @@cnt += 1 irb(main):006:2> end irb(main):007:1> def id;@id;end irb(main):008:1> end => nil irb(main):009:0> class Q irb(main):010:1> def Q.get &block irb(main):011:2> r = Resource.new irb(main):012:2> if Kernel::block_given? irb(main):013:3> block.call(r) irb(main):014:3> else irb(main):015:3* return r irb(main):016:3> end irb(main):017:2> end irb(main):018:1> end => nil irb(main):019:0> Q.get => # irb(main):020:0> Q.get {|r| puts r.id} 1 => nil irb(main):021:0> I am interested in further suggestions is my implementation close to that of File.open? Regards, Daniel