如何创建一个在传递块时初始化和关闭的Ruby类?
发布时间:2020-12-17 01:31:53 所属栏目:百科 来源:网络整理
导读:Ruby有File类,可以使用普通的new()方法初始化,或者使用open()并传递一个块.我怎么写一个表现得像这样的课? File.open("myfile.txt","r") do |f|...end 解决方法 这是将块传递给new / open方法的简单示例 class Foo def initialize(args,block) if block_giv
Ruby有File类,可以使用普通的new()方法初始化,或者使用open()并传递一个块.我怎么写一个表现得像这样的课?
File.open("myfile.txt","r") do |f| ... end 解决方法
这是将块传递给new / open方法的简单示例
class Foo def initialize(args,&block) if block_given? p block.call(args) # or do_something else #do_something else end end def self.open(args,&block) if block_given? a = new(args,&block) # or do_something else #do_something else end ensure a.close end def close puts "closing" end end Foo.new("foo") { |x| "This is #{x} in new" } # >> "This is foo in new" Foo.open("foo") { |x| "This is #{x} in open" } # >> "This is foo in open" # >> closing (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |