Menu
CoddyTech

Hàm liệt kê công việc theo trạng thái

Thuộc phần Giới thiệu về Luau trong hành trình Lua của Coddy. Bài học 50 trên 80.

challenge icon

Thử thách

Dễ

Thêm một hàm để lọc các nhiệm vụ theo trạng thái.

  1. Xóa các dòng bên dưới -- Try it.
  2. Viết local function filterTasks(list: {Task}, done: boolean): {Task} để trả về một danh sách mới gồm các nhiệm vụ có done bằng tham số.
  3. Bên dưới -- Try it, lưu filterTasks(tasks, false) vào local pending, rồi in ra #pending và pending[2].title.

Nhấn Run Code: đầu ra hiển thị 2 và Build a task manager.

Tự làm thử

-- Cấu trúc mà mọi tác vụ trong trình quản lý tuân theo
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},
}
-- Tạo tác vụ với id chưa dùng tiếp theo rồi thêm vào danh sách
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
-- Đánh dấu tác vụ có id này là đã hoàn thành; cho biết có tìm thấy tác vụ đó không
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
-- Thử chạy
print(completeTask(tasks, 1))
print(tasks[1].done)
print(completeTask(tasks, 99))

Tất cả bài học trong Giới thiệu về Luau

Tự luyện tập: Trình biên dịch Luau online