Menu
CoddyTech

Hàm là giá trị hạng nhất

Thuộc phần Logic và luồng chương trình trong hành trình Lua của Coddy. Bài học 12 trên 54.

Trong Lua, hàm không chỉ là những khối code thực hiện các tác vụ. Chúng là các giá trị có thể được xử lý như mọi kiểu dữ liệu khác. Điều này có nghĩa là bạn có thể làm việc với hàm giống như cách bạn làm việc với số, chuỗi hoặc bảng.

Bạn có thể lưu một hàm (function) vào một biến:

local greet = function()
    print("Hello!")
end

greet()  -- Đầu ra: Hello!

Ở đây, hàm (function) được gán cho biến greet, và bạn có thể gọi hàm đó như mọi hàm thông thường. Điều này mở ra nhiều khả năng mạnh mẽ để bạn tổ chức code.

Bạn cũng có thể truyền hàm (function) làm đối số cho các hàm khác. Cách này đặc biệt hữu ích khi bạn muốn một hàm sử dụng hành vi được xác định trong một hàm khác:

function executeAction(action)
    action()
end

local sayHello = function()
    print("Hello from a function!")
end

executeAction(sayHello)  -- Đầu ra: Hello from a function!

Trong ví dụ này, executeAction nhận một hàm (function) làm tham số rồi gọi hàm đó. Hàm sayHello được truyền vào giống như cách bạn truyền một số hoặc một chuỗi.

Hàm (function) thậm chí có thể trả về hàm khác. Điều này cho phép bạn tạo hàm một cách linh hoạt dựa trên các điều kiện hoặc tham số nhất định:

function createMultiplier(factor)
    return function(number)
        return number * factor
    end
end

local double = createMultiplier(2)
print(double(5))  -- Đầu ra: 10
challenge icon

Thử thách

Dễ

Viết hàm applyOperation nhận a, b và operation, rồi trả về kết quả của việc áp dụng hàm thao tác lên hai số.

Tham số operation là một bảng chứa hàm sẽ được gọi với a và b làm đối số.

Logic:

  • Lấy hàm từ bảng operation bằng khóa "func"
  • Gọi hàm đó với a và b làm đối số
  • Trả về kết quả

Tham số:

  • a (số): Số thứ nhất
  • b (số): Số thứ hai
  • operation (bảng): Bảng chứa hàm được lưu tại khóa "func"

Giá trị trả về: Kết quả của việc gọi hàm thao tác với a và b (số)

Tự làm thử

function applyOperation(a, b, operation)
    -- Viết code ở đây
end
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng chương trình

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