Как я могу читать из текстового файла и создавать экземпляры классов со строками текста, чтобы поместить их в массив? - PullRequest
1 голос
/ 27 сентября 2019

У меня есть текстовый файл с именем «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

Я также продолжал видеть предупреждающее сообщение, в котором упоминалось создание экземпляра объекта и бесконечный цикл, может кто-нибудь объяснить мне, что это значит?

1 Ответ

0 голосов
/ 27 сентября 2019

Я бы настоятельно рекомендовал вам создать свой собственный класс.

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 в свой проект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...