Lua - Biến
Một biến không là gì khác ngoài tên được đặt cho một vùng lưu trữ mà chương trình của chúng ta có thể thao tác. Nó có thể chứa các loại giá trị khác nhau bao gồm các hàm và bảng.
Tên của một biến có thể bao gồm các chữ cái, chữ số và ký tự gạch dưới. Nó phải bắt đầu bằng một chữ cái hoặc một dấu gạch dưới. Chữ hoa và chữ thường khác nhau vì Lua phân biệt chữ hoa chữ thường. Có tám loại giá trị cơ bản trong Lua -
Trong Lua, mặc dù chúng ta không có kiểu dữ liệu biến, chúng ta có ba kiểu dựa trên phạm vi của biến.
Global variables - Tất cả các biến được coi là toàn cục trừ khi được khai báo rõ ràng là cục bộ.
Local variables - Khi kiểu được chỉ định là cục bộ cho một biến thì phạm vi của nó bị giới hạn với các hàm bên trong phạm vi của chúng.
Table fields - Đây là một loại biến đặc biệt có thể chứa bất cứ thứ gì ngoại trừ nil bao gồm các hàm.
Định nghĩa biến trong Lua
Định nghĩa biến có nghĩa là cho trình thông dịch biết vị trí và bao nhiêu để tạo bộ lưu trữ cho biến. Định nghĩa biến có kiểu tùy chọn và chứa danh sách một hoặc nhiều biến thuộc kiểu đó như sau:
type variable_list;
Đây, type là tùy chọn cục bộ hoặc kiểu được chỉ định làm cho nó toàn cầu và variable_listcó thể bao gồm một hoặc nhiều tên định danh được phân tách bằng dấu phẩy. Một số khai báo hợp lệ được hiển thị ở đây -
local i, j
local i
local a,c
Dòng local i, jcả khai báo và định nghĩa các biến i và j; hướng dẫn trình thông dịch tạo các biến có tên i, j và giới hạn phạm vi là cục bộ.
Các biến có thể được khởi tạo (gán giá trị ban đầu) trong khai báo của chúng. Bộ khởi tạo bao gồm một dấu bằng theo sau là một biểu thức hằng số như sau:
type variable_list = value_list;
Một số ví dụ là -
local d , f = 5 ,10 --declaration of d and f as local variables.
d , f = 5, 10; --declaration of d and f as global variables.
d, f = 10 --[[declaration of d and f as global variables.
Here value of f is nil --]]
Đối với định nghĩa không có trình khởi tạo: các biến có thời lượng lưu trữ tĩnh được khởi tạo ngầm định bằng nil.
Khai báo biến trong Lua
Như bạn có thể thấy trong các ví dụ trên, phép gán cho nhiều biến tuân theo định dạng danh sách biến và giá trị. Trong ví dụ trênlocal d, f = 5,10 chúng ta có d và f trong danh sách biến và 5 và 10 trong danh sách giá trị.
Việc gán giá trị trong Lua diễn ra giống như biến đầu tiên trong danh sách biến với giá trị đầu tiên trong danh sách giá trị, v.v. Do đó, giá trị của d là 5 và giá trị của f là 10.
Thí dụ
Hãy thử ví dụ sau, trong đó các biến đã được khai báo ở trên cùng, nhưng chúng đã được xác định và khởi tạo bên trong hàm chính:
-- Variable definition:
local a, b
-- Initialization
a = 10
b = 30
print("value of a:", a)
print("value of b:", b)
-- Swapping of variables
b, a = a, b
print("value of a:", a)
print("value of b:", b)
f = 70.0/3.0
print("value of f", f)
Khi đoạn mã trên được tạo và thực thi, nó tạo ra kết quả sau:
value of a: 10
value of b: 30
value of a: 30
value of b: 10
value of f 23.333333333333
Giá trị và giá trị trong Lua
Có hai loại biểu thức trong Lua -
lvalue- Các biểu thức tham chiếu đến một vị trí bộ nhớ được gọi là biểu thức "lvalue". Giá trị có thể xuất hiện ở dạng bên trái hoặc bên phải của bài tập.
rvalue- Thuật ngữ rvalue đề cập đến một giá trị dữ liệu được lưu trữ tại một số địa chỉ trong bộ nhớ. Giá trị là một biểu thức không thể có giá trị được gán cho nó, có nghĩa là giá trị có thể xuất hiện ở phía bên phải, nhưng không xuất hiện ở phía bên trái của phép gán.
Các biến là các giá trị và do đó có thể xuất hiện ở bên trái của một phép gán. Các chữ số là các giá trị và do đó có thể không được chỉ định và không thể xuất hiện ở phía bên trái. Sau đây là một tuyên bố hợp lệ -
g = 20
Nhưng sau đây không phải là một tuyên bố hợp lệ và sẽ tạo ra lỗi thời gian xây dựng -
10 = 20
Trong ngôn ngữ lập trình Lua, ngoài các kiểu gán trên, có thể có nhiều giá trị và giá trị trong cùng một câu lệnh. Nó được hiển thị bên dưới.
g,l = 20,30
Trong câu lệnh trên, 20 được gán cho g và 30 được gán cho l.