У меня есть два класса: TodoList
и TodoItem
. TodoList
имеет массив TodoItem
s, и этот массив называется todo_items
. Каждый экземпляр TodoItem
имеет две переменные экземпляра: name
(строка) и complete
(boolean).Ссылка на переменные экземпляра в массиве
Я пытаюсь написать метод класса TodoList
, чтобы удалить TodoItem
из этого массива. Недописанный код ниже для метода TodoList.remove_item
работает, но он использует each
для прохождения массива todo_items
, проверяя TodoItem
экземпляр экземпляра name
. Я чувствую, что должен быть лучший способ сделать это.
Я пытался заставить его работать, используя include?
и delete_at
на todo_items
, который не работает, потому что его содержание являются экземплярами класса TodoItem
.
EDIT: Код для обоих классов TodoList
и TodoItem
ниже:
ToDoList:
require "./todo_item"
class TodoList
attr_reader :name, :todo_items
def initialize(name)
@name = name
@todo_items = []
end
def add_item(name)
todo_items.push(TodoItem.new(name))
end
def remove_item(name)
index = 0
found = false
todo_items.each do |todo_item|
if todo_item.name == name
found = true
end
if found
break
else
index += 1
end
end
if found
todo_items.delete_at(index)
return true
else
return false
end #if
end
# CODE BELOW DOES NOT WORK
# if (todo_items.include?
# arr_index = todo_items.(#??)
# todo_items.delete_at(arr_index) #invalid ref
# puts "#{name} was removed from the list"
# else
# puts "That item does not exist in the to do list."
# end #if
# end #def remove_item
end #class TodoList
TodoItem:
class TodoItem
attr_reader :name
def initialize(name)
@name = name
@complete = false
end #initialize
def to_s
if complete?
"[C] #{name}"
else
"[I] #{name}"
end
end
def complete?
@complete
end
def mark_complete!
@complete = true
end
def mark_incomplete!
@complete = false
end
end #class TodoItem
Почему это метод класса? Это не выглядит правильным. – sawa
В чем вопрос? – sawa
'' 'TodoList.remove_item''' предназначен для удаления' '' 'TodoItem''' из массива' '' TodoList.todo_items''', если значение переменной экземпляра '' 'name''' соответствует строка аргумента. Чтобы вы посоветовали? – capecoder