在初始化块内输出文件

  • 本文关键字:输出 文件 初始化 ruby
  • 更新时间 :
  • 英文 :


我有一个类似于下面的类,我们称之为TestClass

class TestClass
  def output_files
    a = ("a".."j").to_a
    f1 = File.open("test.txt", "w")
    f2 = File.open("test2.txt", "w")
    a.each do |l|
      f1.write("#{l}n"
      f2.write("#{l}n")
    end
    f1.close
    f2.close
  end
end

如果我这样做:

t = TestClass.new do
  output_files
end

我希望这会输出两个文件,即使它会返回 TestClass 的实例。不过,它不会输出任何文件。如何在这样的块内输出文件?

如果我这样做:

t = TestClass.new
t.output_files

这实际上会输出文件。

您可以使用

BasicObject#instance_evalBasicObject#instance_exec

t = TestClass.new.instance_exec do
  output_files
  self
end

你也可以写TestClass#initialize来摆脱一些样板:

class TestClass
  def initialize(&blk)
    blk && initialize_exec(&blk)
  end
end
# ...
t = TestClass.new do
  output_files
end

相关内容

  • 没有找到相关文章

最新更新