Roblox sử dụng ngôn ngữ lập trình Luau. Các mẫu mã và bảng dưới đây chỉ ra một số điểm khác biệt giữa cú pháp của C# và Luau.
Kết thúc dòng
Bạn không cần dấu chấm phẩy trong Luau, nhưng chúng sẽ không phá vỡ cú pháp.
Từ khóa dự trữ
Bảng dưới đây có các từ khóa dự trữ của Luau được ánh xạ tới tương đương C# của chúng. Lưu ý rằng nó không hiển thị tất cả các từ khóa của C#.
| Luau | C# |
|---|---|
| and | |
| break | break |
| do | do |
| if | if |
| else | else |
| elseif | else if |
| then | |
| end | |
| true | true |
| false | false |
| for | for hoặc foreach |
| function | |
| in | in |
| local | |
| nil | null |
| not | |
| or | |
| repeat | |
| return | return |
| until | |
| while | while |
Nhận xét
Nhận xét trong Luau-- Nhận xét một dòng--[[ Đầu ra kết quả:Nhận xét khối--]]
Nhận xét trong C#// Nhận xét một dòng/*Nhận xét khối*/
Chuỗi
Chuỗi trong Luau-- Chuỗi đa dònglocal multiLineString = [[Đây là một chuỗi mà,khi in ra, sẽ xuất hiệntrên nhiều dòng]]-- Nối chuỗilocal s1 = "Đây là một chuỗi "local s2 = "được tạo thành từ hai phần."local endString = s1 .. s2
Chuỗi trong C#// Chuỗi đa dòngstring multiLineString1 = "Đây là một chuỗi mà,\n khi in ra, sẽ xuất hiện\n trên nhiều dòng.";string multiLineString2 = @"Đây là một chuỗi mà,khi in ra, sẽ xuất hiệntrên nhiều dòng";// Nối chuỗistring s1 = "Đây là một chuỗi ";string s2 = "được tạo thành từ hai phần.";string endString = s1 + s2;
Bảng
Để tìm hiểu thêm về bảng trong Luau, xem Bảng.
Bảng từ điển
Bạn có thể sử dụng bảng trong Luau như từ điển giống như trong C#.
Bảng Từ Điển trong Luaulocal dictionary = {val1 = "này",val2 = "là"}print(dictionary.val1) -- Xuất 'này'print(dictionary["val1"]) -- Xuất 'này'dictionary.val1 = nil -- Xóa 'val1' khỏi bảngdictionary["val3"] = "một từ điển" -- Ghi đè 'val3' hoặc thiết lập cặp khóa-giá trị mới
Bảng Từ Điển trong C#Dictionary dictionary = new Dictionary(){{ "val1", "này" },{ "val2", "là" }};Console.WriteLine(dictionary["val1"]); // Xuất 'này'dictionary.Remove("val1"); // Xóa 'val1' khỏi từ điểndictionary["val3"] = "một từ điển"; // Ghi đè 'val3' hoặc thiết lập cặp khóa-giá trị mớidictionary.Add("val3", "một từ điển"); // Tạo một cặp khóa-giá trị mới
Bảng được đánh chỉ số bằng số
Bạn có thể sử dụng bảng trong Luau như mảng giống như trong C#. Chỉ số bắt đầu từ 1 trong Luau và 0 trong C#.
Bảng Được Đánh Chỉ Số Bằng Số trong Luaulocal npcAttributes = {"mạnh", "thông minh"}print(npcAttributes[1]) -- Xuất 'mạnh'print(#npcAttributes) -- Xuất kích thước của danh sách-- Thêm vào danh sáchtable.insert(npcAttributes, "khiêm tốn")-- Một cách khác...npcAttributes[#npcAttributes+1] = "khiêm tốn"-- Chèn vào đầu danh sáchtable.insert(npcAttributes, 1, "dũng cảm")-- Xóa phần tử tại một chỉ số nhất địnhtable.remove(npcAttributes, 3)
Bảng Được Đánh Chỉ Số Bằng Số trong C#List npcAttributes = new List{"mạnh", "thông minh"};Console.WriteLine(npcAttributes[0]); // Xuất 'mạnh'Console.WriteLine(npcAttributes.Count); // Xuất kích thước của danh sách// Thêm vào danh sáchnpcAttributes.Add("khiêm tốn");// Một cách khác...npcAttributes.Insert(npcAttributes.Count, "khiêm tốn");// Chèn vào đầu danh sáchnpcAttributes.Insert(0, "dũng cảm");// Xóa phần tử tại một chỉ số nhất địnhnpcAttributes.Remove(2);
Toán tử
Toán tử điều kiện
| Toán tử | Luau | C# |
|---|---|---|
| Bằng | == | == |
| Lớn hơn | > | > |
| Nhỏ hơn | < | < |
| Lớn hơn hoặc Bằng | >= | >= |
| Nhỏ hơn hoặc Bằng | <= | <= |
| Không Bằng | ~= | != |
| Và | and | && |
| Hoặc | or | || |
Toán tử số học
| Luau | C# | |
|---|---|---|
| Cộng | + | + |
| Trừ | - | - |
| Nhân | * | * |
| Chia | / | / |
| Phần dư | % | % |
| Lũy thừa | ^ | ** |
Biến
Trong Luau, các biến không chỉ rõ kiểu của chúng khi bạn khai báo. Biến Luau không có các bộ truy cập, mặc dù bạn có thể tiền tố các biến "riêng tư" bằng dấu gạch dưới để dễ đọc hơn.
Biến trong Luaulocal stringVariable = "giá trị"-- Khai báo "công khai"local variableName-- Khai báo "riêng tư" - phân tích giống nhaulocal _variableName
Biến trong C#string stringVariable = "giá trị";// Khai báo công khaipublic string variableName// Khai báo riêng tưstring variableName;
Phạm vi
Trong Luau, bạn có thể viết biến và logic trong một phạm vi chặt chẽ hơn so với hàm hoặc lớp của chúng bằng cách lồng logic bên trong các từ khóa do và end, tương tự như dấu ngoặc nhọn {} trong C#. Để biết thêm chi tiết, xem Phạm vi.
Phạm vi trong Luaulocal outerVar = 'Văn bản phạm vi bên ngoài'do-- Chỉnh sửa 'outerVar'outerVar = 'Văn bản phạm vi bên trong đã chỉnh sửa'-- Giới thiệu một biến cục bộlocal innerVar = 'Văn bản phạm vi bên trong'print('1: ' .. outerVar) -- in ra "1: Văn bản phạm vi bên trong đã chỉnh sửa"print('2: ' .. innerVar) -- in ra "2: Văn bản phạm vi bên trong"endprint('3: ' .. outerVar) -- in ra "3: "Văn bản phạm vi bên trong đã chỉnh sửa"-- Cố gắng in 'innerVar' ở đây sẽ thất bại
Phạm vi trong C#var outerVar = "Văn bản phạm vi bên ngoài";{// Chỉnh sửa 'outerVar'outerVar = "Văn bản phạm vi bên trong đã chỉnh sửa";// Giới thiệu một biến cục bộvar innerVar = "Văn bản phạm vi bên trong";Console.WriteLine("1: " + outerVar); // in ra "1: Văn bản phạm vi bên trong đã chỉnh sửa"Console.WriteLine("2: " + innerVar); // in ra "2: Văn bản phạm vi bên trong"}Console.WriteLine("3: " + outerVar); // in ra "3: "Văn bản phạm vi bên trong đã chỉnh sửa"// Cố gắng in 'innerVar' ở đây sẽ thất bại
Câu lệnh điều kiện
Câu Lệnh Điều Kiện trong Luau-- Một điều kiệnif boolExpression thendoSomething()end-- Nhiều điều kiệnif not boolExpression thendoSomething()elseif otherBoolExpression thendoSomething()elsedoSomething()end
Câu Lệnh Điều Kiện trong C#// Một điều kiệnif (boolExpression) {doSomething();}// Nhiều điều kiệnif (!boolExpression) {doSomething();}else if (otherBoolExpression) {doSomething();}else {doSomething();}
Toán tử điều kiện
Toán Tử Điều Kiện trong Luaulocal max = if x > y then x else y
Toán Tử Điều Kiện trong C#int max = (x > y) ? x : y;
Vòng lặp
Để tìm hiểu thêm về vòng lặp trong Luau, xem Cấu trúc điều khiển.
Vòng lặp While và Repeat
Vòng Lặp While và Repeat trong Luauwhile boolExpression dodoSomething()endrepeatdoSomething()until not boolExpression
Vòng Lặp While và Repeat trong C#while (boolExpression) {doSomething();}do {doSomething();} while (boolExpression)
Vòng lặp For
Vòng Lặp For Chung trong Luau-- Vòng lặp tiếnfor i = 1, 10 dodoSomething()end-- Vòng lặp ngượcfor i = 10, 1, -1 dodoSomething()end
Vòng Lặp For Chung trong C#// Vòng lặp tiếnfor (int i = 1; i <= 10; i++) {doSomething();}// Vòng lặp ngượcfor (int i = 10; i >= 1; i--) {doSomething();}
Vòng Lặp For Qua Các Bảng trong Luaulocal abcList = {"a", "b", "c"}for i, v in ipairs(abcList) doprint(v)endlocal abcDictionary = { a=1, b=2, c=3 }for k, v in pairs(abcDictionary) doprint(k, v)end
Vòng Lặp For Qua Các Danh Sách trong C#List<string> abcList = new List<string>{"a", "b", "c"};foreach (string v in abcList) {Console.WriteLine(v);}Dictionary<string, int> abcDictionary = new Dictionary<string, int>{ {"a", 1}, {"b", 2}, {"c", 3} };foreach (KeyValuePair<string, int> entry in abcDictionary) {Console.WriteLine(entry.Key + " " + entry.Value);}
Luau cũng hỗ trợ lặp lại tổng quát, điều này giúp việc làm việc với bảng trở nên dễ dàng hơn.
Hàm
Để tìm hiểu thêm về hàm trong Luau, xem Hàm.
Hàm tổng quát
Hàm Tổng Quát trong Luau
-- Hàm tổng quát
local function increment(number)
return number + 1
end
Hàm Tổng Quát trong C#
// Hàm tổng quát
int increment(int number) {
return number + 1;
}
Số lượng tham số biến
Số Lượng Tham Số Biến trong Luau
-- Số lượng tham số biến
local function variableArguments(...)
print(...)
end
Số Lượng Tham Số Biến trong C#
// Số lượng tham số biến
void variableArguments(params string[] inventoryItems) {
for (item in inventoryItems) {
Console.WriteLine(item);
}
}
Tham số theo tên
Tham Số Theo Tên trong Luau
-- Tham số theo tên
local function namedArguments(args)
return args.name .. "'s birthday: " .. args.dob
end
namedArguments{name="Bob", dob="4/1/2000"}
Tham Số Theo Tên trong C#
// Tham số theo tên
string namedArguments(string name, string dob) {
return name + "'s birthday: " + dob;
}
namedArguments(name: "Bob", dob: "4/1/2000");
Cấu trúc try-catch
Cấu Trúc Try/Catch trong Luau
local function fireWeapon()
if not weaponEquipped then
error("Không có vũ khí nào được trang bị!")
end
-- Tiến hành...
end
local success, errorMessage = pcall(fireWeapon)
if not success then
print(errorMessage)
end
Cấu Trúc Try/Catch trong C#
void fireWeapon() {
if (!weaponEquipped) {
// Sử dụng một ngoại lệ do người dùng định nghĩa
throw new InvalidWeaponException("Không có vũ khí nào được trang bị!");
}
// Tiến hành...
}
try {
fireWeapon();
} catch (InvalidWeaponException ex) {
// Một lỗi đã được đưa ra
}