Ruby 如何从文本文件中读取并创建具有文本行的类实例,以将它们放入数组中?

Ruby 如何从文本文件中读取并创建具有文本行的类实例,以将它们放入数组中?,ruby,class,Ruby,Class,我有一个名为“test.txt”的文本文件,其内容如下: Hello world Cat and dog It is hot outside 在我的代码中,我试图从文件中读取一行文本,并用我刚刚读到的句子创建一个“Object”类的实例。我知道如何在不使用类实例的情况下实现这一点,但对于我正在进行的一个更大的项目,我试图了解如何从文件中读取行,使用读取行创建类实例,然后创建类实例数组。我走对了吗 class Object attr_accessor :str def initiali

我有一个名为“test.txt”的文本文件,其内容如下:

Hello world
Cat and dog
It is hot outside
在我的代码中,我试图从文件中读取一行文本,并用我刚刚读到的句子创建一个“Object”类的实例。我知道如何在不使用类实例的情况下实现这一点,但对于我正在进行的一个更大的项目,我试图了解如何从文件中读取行,使用读取行创建类实例,然后创建类实例数组。我走对了吗

class Object
  attr_accessor :str

  def initialize(sent)
    @str = sent
  end
end

class Solution
  attr_accessor :array

  def initialize
    @array = Array.new
  end

  def make_Array
    File.open("test.txt").each do | line |
      @array << Object.new(line.chomp)
    end
    print @array
  end
end
类对象
属性存取器:str
def初始化(已发送)
@str=已发送
结束
结束
类解决方案
属性存取器:数组
def初始化
@array=array.new
结束
def make_阵列
打开(“test.txt”)。每个do行|

@数组我强烈建议您创建自己的类

class LineWrapper
  attr_reader :content  # if you don't want others to change the value, make the attribute read-only.

  def initialize(content)
    @content = content
  end
end

# suppose the file size is small enough to hold in memory
array = File.readlines('test.txt').map!{|line| LineWrapper.new(line)}

# print the array
pp array

但在你采用这种方法之前,你应该问问自己为什么需要额外的课程?简单的字符串不够好吗?“为了大型项目的目的”不足以说服我需要创建包装器类,因为Ruby字符串非常好,几乎可以做任何我想做的事情。如果这还不够的话,我会在我的项目中加入
ActiveSupport

这将覆盖
Object::initialize
,其后果将很糟糕。@CarySwoveland是的,我一直看到警告消息。正确的方法是什么?那么为什么要使用monkey patching
Object
而不是创建自己的类?为什么在这里使用map更好??我想我不明白为什么在这里使用map是可以的,但是从文件中读取句子后直接将其放入数组会给我一条警告信息。我的作业中的一个要求是将类实例放入一个数组中,该数组是另一个类中的实例变量。那么在这种情况下使用map还可以吗?@Karen警告来自
对象。new
,而不是
数组::@Karen您需要一个类,其实例包含一个包含多个
LineWrapper
实例的数组。我相信你可以自己解决:)