Итак, я создаю класс в ruby, где я смогу вставить свои данные в текстовый файл, а затем прочитать, найти из него, но я застрял при удалении, а также обновить / редактировать.
По сути, я создал метод с именем «find» и сделал его ссылкой на мой метод «delete».
def find(keyword="")
if keyword
person = People.read_people
found = person.select do |pip|
pip.name.downcase.include?(keyword.downcase) ||
pip.age.downcase.include?(keyword.downcase) ||
pip.country.downcase.include?(keyword.downcase)
end
found.each do |person|
puts person.name + " | " + person.age + " | " + person.country
end
else
puts "find using a key phrase eg. 'find sam' \n\n"
end
end
def list
puts "\nListing People \n\n".upcase
people = People.read_people
people.each do |person|
puts person.name + " | " + person.age + " | " + person.country
end
end
def delete(keyword="")
if keyword
person = People.read_people
found = person.select do |pip|
pip.name.downcase.include?(keyword.downcase) ||
pip.age.downcase.include?(keyword.downcase) ||
pip.country.downcase.include?(keyword.downcase)
end
person.delete(found)
else
puts "find using a key phrase eg. 'find josh' \n\n"
end
end
Как видите, я пытался удалить предоставленное ключевое слово из массива (w /c был сохранен в текстовом файле) через метод класса read_people.Вот как это выглядит:
def self.read_people
# read the people file
# return instances of people
people = []
if file_usable?
file = File.new(@@filepath, 'r')
file.each_line do |line|
people << People.new.import_line(line.chomp)
end
file.close
end
return people
end
def import_line(line)
line_array = line.split("\t")
@name, @age, @country = line_array
return self
end
Как это исправить и удалить найденный элемент по ключевому слову?
См. Фактические коды здесь: https://repl.it/repls/VastWildFact