Befehlsschleife: Auflisten und Erledigen
Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy. Lektion 53 von 80.
Aufgabe
MittelFüge einen Befehl hinzu, der Aufgaben auflistet, und einen, der sie abschließt.
- Gib bei
"list"jede Aufgabe als`[x] {t.title}`aus, wenn sie erledigt ist, andernfalls als`[ ] {t.title}`. - Lies bei
"done"local id: number = tonumber(io.read()) or 0ein; gib`Task {id} completed`aus, wenncompleteTask(tasks, id)true ist, andernfalls`No task with id {id}`.
Drücke „Run Code“: Bei der Eingabe done, 2, quit zeigt die Ausgabe Task 2 completed.
Probier es selbst
-- Die Struktur, der jede Aufgabe im Manager folgt
type Task = {
id: number,
title: string,
done: boolean,
}
local tasks: {Task} = {
{id = 1, title = "Learn Luau types", done = false},
{id = 2, title = "Build a task manager", done = false},
{id = 3, title = "Write tests", done = true},
}
-- Erstelle eine Aufgabe mit der nächsten freien id und füge sie der Liste hinzu
local function addTask(list: {Task}, title: string): Task
local newTask: Task = {id = #list + 1, title = title, done = false}
table.insert(list, newTask)
return newTask
end
-- Markiere die Aufgabe mit dieser id als erledigt; gib an, ob eine gefunden wurde
local function completeTask(list: {Task}, id: number): boolean
for _, t in ipairs(list) do
if t.id == id then
t.done = true
return true
end
end
return false
end
-- Eine neue Liste der Aufgaben, bei denen das done-Flag übereinstimmt
local function filterTasks(list: {Task}, done: boolean): {Task}
local result: {Task} = {}
for _, t in ipairs(list) do
if t.done == done then
table.insert(result, t)
end
end
return result
end
-- Eine Zeile: wie viele Aufgaben erledigt sind
local function printSummary(list: {Task}): ()
local doneCount = 0
for _, t in ipairs(list) do
if t.done then
doneCount += 1
end
end
print(`{doneCount}/{#list} tasks done`)
end
-- Probiere es aus
while true do
local command = io.read()
if command == nil or command == "quit" then
break
elseif command == "add" then
local title = io.read()
local added: Task = addTask(tasks, title)
print(`Added task {added.id}: {added.title}`)
end
end
Alle Lektionen in Einführung in Luau
1Erste Schritte mit Luau
Was ist Luau?Warum Luau nutzen?Dein erster Luau-CodeTypprüfung & FehlermodiZusammenfassung: Einführung in Luau4Mit Funktionen arbeiten
Parameter und Rückgabewerte typisierenAnonyme Funktionen typisierenFunktionen ohne RückgabewertOptionale ParameterStandardwerte für ParameterStandardwerte für boolesche WerteFunktionen mit variabler ParameteranzahlFunktionstypen definierenRückblick: typisierte Funktionen7Projekt: Typisierter Aufgabenmanager
Projekt: Die AufgabenstrukturFunktion zum Hinzufügen einer Aufgabe2Grundlegende Typen
Zahl, String und BooleanDer Typ „any“: NotausgangDer Typ „unknown“Nil- und optionale TypenTypinferenz in der PraxisExplizite TypannotationenRückblick: Übung zu grundlegenden Typen5Typ-Aliase, Union-Typen und Schnittmengen-Typen
Typ-Aliase für PrimitivenUnion-TypenArbeiten mit Union-TypenLiterale TypenSchnittmengen-Typen (Intersection Types)Kombination von Typ-AliasenZusammenfassung: Fortgeschrittene Typ-Kombinationen3Typisierte Tabellen: Arrays & Maps
Typisierte ArraysElemente hinzufügen und auslesenWas ist ein Map-Typ?Maps deklarieren und auf Elemente zugreifenTabellen durchlaufenTabellen mit gemischten FormenEin Raster auslesenEin Raster erstellentable.unpackRückblick: Arrays und MapsÜbe selbstständig: Online-Luau-Compiler