加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何创建一个在传递块时初始化和关闭的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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读