Удаление контакта
Часть раздела Logic & Flow путешествия по Lua на Coddy — урок 46 из 54.
Задание
ЛегкоРеализуйте функцию удаления для вашего приложения списка контактов. Когда пользователь вводит delete, программа должна запросить имя, найти этот контакт в списке и удалить его.
Опираясь на предыдущее задание, добавьте функциональность для обработки команды delete. Пройдите циклом по таблице contacts, чтобы найти контакт с соответствующим именем, затем используйте table.remove(), чтобы удалить его из списка. Предоставьте пользователю обратную связь о том, было ли удаление успешным.
Требования:
- Сохраните весь код из предыдущего задания (настройку, отображение меню, основной цикл, функции add, list и search)
- Когда пользователь вводит
delete, выведите:Enter name to delete: - Прочитайте имя с помощью
io.read() - Используйте
ipairs()для итерации по таблицеcontacts - Для каждого контакта проверьте, совпадает ли поле
nameс именем для удаления в точности - Если совпадение найдено, используйте
table.remove()с индексом контакта, чтобы удалить его - После успешного удаления выведите:
Contact deleted successfully! - Если после проверки всех контактов совпадение не найдено, выведите:
Contact not found. - Когда используется команда
listи контактов нет, выведите:No contacts available. - Команды
add,list,searchиquitдолжны по-прежнему работать, как раньше
Примечание: Сообщение о пустом списке в этом задании — No contacts available. — обязательно используйте именно эту строку, даже если в предыдущем уроке использовалась другая формулировка.
Пример взаимодействия:
Welcome to Contact List Manager!
Available Commands:
add - Add a new contact
list - Display all contacts
search - Search for a contact
delete - Delete a contact
quit - Exit the program
Enter command:
add
Enter name:
Alice
Enter phone number:
555-1234
Contact added successfully!
Enter command:
add
Enter name:
Bob
Enter phone number:
555-5678
Contact added successfully!
Enter command:
list
Contact List:
1. Alice - 555-1234
2. Bob - 555-5678
Enter command:
delete
Enter name to delete:
Alice
Contact deleted successfully!
Enter command:
list
Contact List:
1. Bob - 555-5678
Enter command:
delete
Enter name to delete:
Charlie
Contact not found.
Enter command:
quit
Goodbye!Попробуйте сами
-- Contact List Manager
local contacts = {}
-- Display welcome message
print("Welcome to Contact List Manager!")
print()
-- Display menu
print("Available Commands:")
print("add - Add a new contact")
print("list - Display all contacts")
print("search - Search for a contact")
print("delete - Delete a contact")
print("quit - Exit the program")
print()
-- Main loop
while true do
print("Enter command:")
local command = io.read()
if command == "add" then
print("Enter name:")
local name = io.read()
print("Enter phone number:")
local phone = io.read()
table.insert(contacts, {name = name, phone = phone})
print("Contact added successfully!")
print()
elseif command == "list" then
if #contacts == 0 then
print("No contacts available.")
else
print("Contact List:")
for i, contact in ipairs(contacts) do
print(i .. ". " .. contact.name .. " - " .. contact.phone)
end
end
print()
elseif command == "search" then
print("Enter name to search:")
local searchName = io.read()
local found = false
for i, contact in ipairs(contacts) do
if contact.name == searchName then
print("Found: " .. contact.name .. " - " .. contact.phone)
found = true
break
end
end
if not found then
print("Contact not found.")
end
print()
elseif command == "quit" then
print("Goodbye!")
break
else
print("Command not yet implemented")
print()
end
endВсе уроки раздела Logic & Flow
1Продвинутая итерация таблиц
Итерация с помощью pairs()Итерация с помощью ipairs()pairs() против ipairs()Повторение — Лист персонажа2Дополнительные функции библиотеки table
table.concat()Создание таблиц и unpack()table.sort()Пользовательская сортировка с помощью функцийИтоги — Таблица рекордов5Проект: Движок текстового квеста
Настройка проекта: КомнатаСоединение комнат8Проект: Список контактов
Настройка проектаОсновной цикл