Lua - Chức năng

Hàm là một nhóm các câu lệnh cùng thực hiện một tác vụ. Bạn có thể chia mã của mình thành các chức năng riêng biệt. Cách bạn phân chia mã của mình giữa các chức năng khác nhau là tùy thuộc vào bạn, nhưng về mặt logic, sự phân chia thường là duy nhất, vì vậy mỗi chức năng thực hiện một nhiệm vụ cụ thể.

Ngôn ngữ Lua cung cấp nhiều phương thức cài sẵn mà chương trình của bạn có thể gọi. Ví dụ, phương phápprint() để in đối số được truyền dưới dạng đầu vào trong bảng điều khiển.

Một hàm được biết đến với nhiều tên khác nhau như một phương thức hoặc một quy trình con hoặc một thủ tục, v.v.

Xác định một chức năng

Dạng tổng quát của định nghĩa phương thức trong ngôn ngữ lập trình Lua như sau:

optional_function_scope function function_name( argument1, argument2, argument3........, 
argumentn)
function_body
return result_params_comma_separated
end

Định nghĩa phương thức trong ngôn ngữ lập trình Lua bao gồm tiêu đề phương thứcthân phương thức . Đây là tất cả các phần của một phương pháp -

  • Optional Function Scope- Bạn có thể sử dụng từ khóa local để giới hạn phạm vi của hàm hoặc bỏ qua phần phạm vi, điều này sẽ biến nó thành một hàm toàn cục.

  • Function Name- Đây là tên thực của hàm. Tên hàm và danh sách tham số cùng nhau tạo thành chữ ký hàm.

  • Arguments- Một đối số giống như một trình giữ chỗ. Khi một hàm được gọi, bạn truyền một giá trị cho đối số. Giá trị này được gọi là tham số hoặc đối số thực tế. Danh sách tham số đề cập đến kiểu, thứ tự và số lượng các đối số của một phương thức. Đối số là tùy chọn; nghĩa là, một phương thức có thể không chứa đối số.

  • Function Body - Phần thân của phương thức chứa một tập hợp các câu lệnh xác định chức năng của phương thức.

  • Return - Trong Lua, có thể trả về nhiều giá trị bằng cách theo sau từ khóa return với các giá trị trả về được phân tách bằng dấu phẩy.

Thí dụ

Sau đây là mã nguồn cho một hàm được gọi là max(). Hàm này nhận hai tham số num1 và num2 và trả về giá trị tối đa giữa hai tham số:

--[[ function returning the max between two numbers --]]
function max(num1, num2)

   if (num1 > num2) then
      result = num1;
   else
      result = num2;
   end

   return result; 
end

Đối số hàm

Nếu một hàm sử dụng các đối số, nó phải khai báo các biến chấp nhận giá trị của các đối số. Các biến này được gọi làformal parameters của hàm.

Các tham số chính thức hoạt động giống như các biến cục bộ khác bên trong hàm và được tạo khi nhập vào hàm và bị hủy khi thoát.

Gọi một hàm

Trong khi tạo một hàm Lua, bạn đưa ra định nghĩa về những gì hàm phải làm. Để sử dụng một phương thức, bạn sẽ phải gọi hàm đó để thực hiện tác vụ đã xác định.

Khi một chương trình gọi một hàm, điều khiển chương trình sẽ được chuyển sang hàm được gọi. Một hàm được gọi thực hiện tác vụ đã định nghĩa và khi câu lệnh trả về của nó được thực thi hoặc khi kết thúc hàm của nó, nó sẽ trả lại quyền điều khiển chương trình cho chương trình chính.

Để gọi một phương thức, bạn chỉ cần truyền các tham số bắt buộc cùng với tên phương thức và nếu phương thức trả về một giá trị, thì bạn có thể lưu trữ giá trị trả về. Ví dụ -

function max(num1, num2)

   if (num1 > num2) then
      result = num1;
   else
      result = num2;
   end

   return result; 
end

-- calling a function
print("The maximum of the two numbers is ",max(10,4))
print("The maximum of the two numbers is ",max(5,6))

Khi chúng ta chạy đoạn mã trên, chúng ta sẽ nhận được kết quả sau.

The maximum of the two numbers is 	10
The maximum of the two numbers is 	6

Chức năng Gán và Chuyển

Trong Lua, chúng ta có thể gán hàm cho các biến và cũng có thể chuyển chúng dưới dạng tham số của một hàm khác. Đây là một ví dụ đơn giản để gán và truyền một hàm làm tham số trong Lua.

myprint = function(param)
   print("This is my print function -   ##",param,"##")
end

function add(num1,num2,functionPrint)
   result = num1 + num2
   functionPrint(result)
end

myprint(10)
add(2,5,myprint)

Khi chúng ta chạy đoạn mã trên, chúng ta sẽ nhận được kết quả sau.

This is my print function -   ##	10	##
This is my print function -   ##	7	##

Hàm với đối số biến

Có thể tạo các hàm với các đối số biến trong Lua bằng cách sử dụng '...' làm tham số của nó. Chúng ta có thể hiểu được điều này bằng cách xem một ví dụ trong đó hàm sẽ trả về giá trị trung bình và nó có thể nhận các đối số thay đổi.

function average(...)
   result = 0
   local arg = {...}
   for i,v in ipairs(arg) do
      result = result + v
   end
   return result/#arg
end

print("The average is",average(10,5,3,4,5,6))

Khi chúng ta chạy đoạn mã trên, chúng ta sẽ nhận được kết quả sau.

The average is	5.5