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: 10Thử 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
operationbằng khóa"func" - Gọi hàm đó với
avàblàm đối số - Trả về kết quả
Tham số:
a(số): Số thứ nhấtb(số): Số thứ haioperation(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
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
2Các hàm khác của thư viện table
table.concat()Tạo table và unpack()table.sort()Sắp xếp tùy chỉnh bằng hàmÔn tập: Bảng điểm cao5Dự án: Bộ máy trò chơi phiêu lưu bằng văn bản
Thiết lập dự án: Căn phòngLiên kết các phòng3Các khái niệm nâng cao về hàm
Trả về nhiều giá trịHàm nhận số lượng đối số linh hoạt (...)Hàm là giá trị hạng nhấtHàm ẩn danhClosure là gì?Ôn tập: bộ xử lý sự kiện đơn giảnTự luyện tập: Trình biên dịch Lua online