将类方法保存到txt的问题

时间:2013-03-22 16:15:17

标签: ruby

我是ruby的新手,犯了很多错误,所以我希望那些有红宝石经验的人可以分享一些知识。 我无法弄清楚如何使ruby将文本保存为方法all写入的txt文件。

class generator
  def all
    puts "i want to save this text into a txt file"
  end
end
new_gen = generator.new
new_gen.all

my_file = File.new("Story.txt", "a+")
my_file.puts("all")
my_file.puts("\n")
my_file.close

我尝试了所有内容,但是txt文件中包含“all”,或者它完全空白。有任何想法吗?我还尝试了my_file.puts(all)my_file.puts(new_gen.all)

3 个答案:

答案 0 :(得分:1)

你的方法应该只返回一个字符串。 Puts显示字符串,不返回它。所以将课程改为:

class generator
  def all
    "i want to save this text into a txt file" # optionally add a return
  end
end
new_gen = generator.new
new_gen.all

然后使用您尝试的最新版本:my_file.puts(new_gen.all)

答案 1 :(得分:1)

试试这个:

class Generator
  def all
    "i want to save this text into a txt file"
  end
end

gen = Generator.new

f = File.new("Story.txt", "a+")
f.puts gen.all
f.close

答案 2 :(得分:1)

如果您希望Generator进行写作,可以将IO对象传递给它。

class Generator
  def initialize(io)
    @io = io
  end

  def all
    @io.puts "i want to save this text into a txt file"
  end
end

# write to STDOUT
gen = Generator.new(STDOUT)
gen.all

# write to file
File.open("Story.txt", "a+") do |file|
  gen = Generator.new(file)
  gen.all
end