[Roblox Scripting | vi] Lua Function Basic
Function (hàm số) là một tập hợp các command (lệnh), có thể được sử dụng nhiều lần trong một script (tập lệnh). Sau khi được define (định nghĩa), một function có thể được execute (thực thi) thông qua một command hoặc được kích hoạt thông qua một event (sự kiện).
Thuật ngữ
- Hàm số: Function (noun)
- Biến số: Variable (noun)
- Lệnh (đơn): Command (noun)
- Tham số: Parameter (noun)
- Tập lệnh: Script (noun)
- Sự kiện: Event (noun)
- Phạm vi sử dụng: Scope (noun)
- Cặp ngoặc đơn
()
: Parentheses (noun) - Kích hoạt: Trigger (verb)
- Định nghĩa: Define (verb)
- Thực thi: Execute (verb)
Định nghĩa Function
Một khai báo function cơ bản bao gồm từ khóa function
theo sau là tên function và một cặp dấu ngoặc đơn ()
. Vì phần thân của hàm sẽ là một khối lệnh (command block), nên nó phải được đóng bằng từ khóa end.
local function addNumbers()
end
Giữa () và end là nơi các lệnh và mã khác tạo nên body function (thân hàm). Các lệnh này sẽ được thực thi khi hàm được gọi:
local function addNumbers()
-- Function body
print("Function called!")
end
Gọi một Function
Khi một hàm được định nghĩa, nó có thể được thực thi bằng cách gọi đúng tên (các hàm không tự thực thi). Để gọi một hàm, chỉ cần nhập tên của nó, theo sau là dấu ngoặc đơn ()
:
local function addNumbers()
-- Function body
print("Function called!")
end
addNumbers()
Tham số trong Function
Các hàm có thể sử dụng các tham số để chứa dữ liệu được truyền vào. Khi bạn khai báo một hàm, bạn có thể thêm một hoặc nhiều tên tham số bên trong dấu ngoặc đơn:
-- "num1" and "num2" are parameters
local function addNumbers(num1, num2)
end
Khi gọi một hàm với các tham số, bạn cần chỉ định các giá trị sẽ được truyền cho hàm. Ví dụ: hàm addNumbers
bên dưới nhận hai số được chuyển vào trong mỗi lần gọi, cộng giá trị 2 tham số này lại với nhau và xuất ra kết quả:
local function addNumbers(num1, num2)
local result = num1 + num2
print(num1 .. " + " .. num2 .. " = " .. result)
end
addNumbers(2, 3)
addNumbers(4, 0.5)
addNumbers(1000, 500)
Các tham số của hàm luôn là tồn tại cục bộ trong hàm và chỉ được sử dụng trong phạm vi của hàm và các phạm vi thuộc hàm.
Nếu bạn gọi một hàm Lua với nhiều tham số hơn so với khai báo, những tham số thừa sẽ bị bỏ qua. Ngược lại, nếu hàm được khai báo với nhiều tham số hơn bạn cung cấp, giá trị
nil
sẽ được sử dụng cho tất cả các tham số bị thiếu.
Function trả về giá trị
Ngoài việc chấp nhận các tham số, các hàm cũng có thể trả về (gửi lại) dữ liệu cho lệnh đang gọi. Điều này được thực hiện thông qua return
các giá trị. Làm việc với ví dụ trên, hàm sau trả về tổng thay vì in nó:
local function addNumbers(num1, num2)
local result = num1 + num2
return result
end
Không đặt bất kỳ lệnh nào theo sau lệnh
return
lệnh vì làm như vậy sẽ tạo ra lỗi.
Khi một hàm trả về giá trị, giá trị này có thể được gán cho một biến hoặc được sử dụng ở bất cứ nơi nào một biến có thể được sử dụng. Đoạn mã sau minh họa khái niệm này:
local function addNumbers(num1, num2)
local result = num1 + num2
return result
end
-- Call the function and store the returned value in variables
local result1 = addNumbers(2, 3)
print(result1)
local result2 = addNumbers(1000, 1000)
print(result2)
Không giống như một số ngôn ngữ lập trình, Lua thậm chí còn cho phép bạn trả về nhiều giá trị từ một hàm:
local function addAndSubtract(num1, num2)
local sum = num1 + num2
local difference = num1 - num2
return sum, difference
end
local sum, difference = addAndSubtract(2, 3)
print(sum)
print(difference)
Playground
Cùng thử tạo một funtion của mình nào!
Link Playground: https://onecompiler.com/lua/