Nach einem Kontakt suchen
Teil des Abschnitts Logic & Flow der Lua-Journey von Coddy — Lektion 45 von 54.
Aufgabe
EinfachImplementieren Sie die Suchfunktion für Ihre Kontaktlisten-Anwendung. Wenn der Benutzer search eingibt, sollte das Programm nach einem Namen fragen und alle passenden Kontakte anzeigen.
Aufbauend auf der vorherigen Herausforderung fügen Sie die Funktionalität zur Verarbeitung des search-Befehls hinzu. Durchlaufen Sie die contacts-Tabelle in einer Schleife, um Kontakte zu finden, deren Namen mit dem Suchbegriff übereinstimmen. Zeigen Sie alle Treffer an oder informieren Sie den Benutzer, falls kein Kontakt gefunden wurde.
Anforderungen:
- Behalten Sie den gesamten Code aus der vorherigen Herausforderung bei (Setup, Menüanzeige, Hauptschleife, Add-Funktionalität und List-Funktionalität)
- Wenn der Benutzer
searcheingibt, geben Sie aus:Enter name to search: - Lesen Sie den Suchbegriff mit
io.read()ein - Verwenden Sie
ipairs(), um durch diecontacts-Tabelle zu iterieren - Prüfen Sie für jeden Kontakt, ob das Feld
nameexakt mit dem Suchbegriff übereinstimmt - Wenn eine Übereinstimmung gefunden wird, geben Sie diese im Format aus:
Found: [name] - [phone] - Wenn nach der Überprüfung aller Kontakte keine Übereinstimmung gefunden wurde, geben Sie aus:
Contact not found. - Die Befehle
add,listundquitsollten weiterhin wie zuvor funktionieren - Andere Befehle sollten weiterhin
Command not yet implementedausgeben
Beispiel-Interaktion:
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:
search
Enter name to search:
Alice
Found: Alice - 555-1234
Enter command:
search
Enter name to search:
Charlie
Contact not found.
Enter command:
quit
Goodbye!Probier es selbst
-- 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 found.")
else
print("Contact List:")
for i, contact in ipairs(contacts) do
print(i .. ". " .. contact.name .. " - " .. contact.phone)
end
end
print()
elseif command == "quit" then
print("Goodbye!")
break
else
print("Command not yet implemented")
print()
end
endAlle Lektionen in Logic & Flow
1Fortgeschrittene Table-Iteration
Iterieren mit pairs()Iterieren mit ipairs()pairs() vs. ipairs()Zusammenfassung – Charakterbogen4Einführung in Metatables
Was ist eine Metatable?setmetatable & getmetatableDie __index-MetamethodeDie __newindex-MetamethodeDie __tostring-MetamethodeArithmetische Metamethoden Teil 1Arithmetische Metamethoden Teil 2Zusammenfassung – Schreibgeschützte Tabellen7Fortgeschrittene String-Manipulation
string.gsub() für ErsetzungenEinführung in String-Patternsstring.find()string.match()Iterieren mit string.gmatch()Rückblick – Log-File-Parser2Weitere Funktionen der Table-Bibliothek
table.concat()Tabellenerstellung & unpack()table.sort()Benutzerdefiniertes Sortieren mit FunktionenRückblick – Highscore-Tabelle5Projekt: Text-Adventure-Engine
Projekt-Setup: Der RaumRäume verknüpfen8Projekt: Kontaktliste
Projekt-SetupDie Hauptschleife