Roblox sử dụng ngôn ngữ lập trình Luau. Các ví dụ mã và bảng sau đây cho thấy một số khác biệt giữa các ngôn ngữ lập trình cho C# và Luau.
Các kết thúc dòng
Bạn không cần dấu chấm câu trong Luau, nhưng chúng không phá vỡ ngữ pháp.
Từ khóa đã được réo
Bảng sau đây có các từ khóa mà Luau đã đặt tên riêng cho chúng. Hãy lưu ý rằng nó không hiển thị tất cả các từ khóa C#.
Tiếng Việt | 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
Bình luận trong Luau
-- Nhận xét dòng bình luận--[[ Kết quả ra:Block comment--]]
Comments in C#
// Single line comment/*Block comment*/
Chuỗi
Chuỗi ở Luau
-- Chuỗi nhiều chuỗilocal multiLineString = [[This is a string that,when printed, appearson multiple lines]]-- Hợp nhấtlocal s1 = "This is a string "local s2 = "made with two parts."local endString = s1 .. s2
Strings in C#
// Multi-line stringstring multiLineString1 = "This is a string that,\nwhen printed, appears\n on multiple lines.";string multiLineString2 = @"This is a string that,when printed, appearson multiple lines";// Concatenationstring s1 = "This is a string ";string s2 = "made with two parts.";string endString = s1 + s2;
Bảng
Để tìm hiểu thêm về các bảng trong Luau, xem Bảng .
Bảng Từ Điển
Bạn có thể sử dụng bảng trong Luau như các từ điển giống như trong C#.
Bảng Từ Điển trong Luau
local dictionary = {val1 = "this",val2 = "is"}print(dictionary.val1) -- Hiển thị 'this'print(dictionary["val1"]) -- Hiển thị 'this'dictionary.val1 = nil -- Loại bỏ 'val1' khỏi bảngdictionary["val3"] = "a dictionary" -- Overwrites 'val3' or sets new key-value pair
Dictionary Tables in C#
Dictionary dictionary = new Dictionary(){{ "val1", "this" },{ "val2", "is" }};Console.WriteLine(dictionary["val1"]); // Outputs 'this'dictionary.Remove("val1"); // Removes 'val1' from dictionarydictionary["val3"] = "a dictionary"; // Overwrites 'val3' or sets new key-value pairdictionary.Add("val3", "a dictionary"); // Creates a new key-value pair
Bảng đếm được dùng chỉ số
Bạn có thể sử dụng các bảng trong Luau như một dàn trùng giống như trong C#. Các chỉ số bắt đầu tại 1 trong Luau và 0 trong C#.
Bảng Tính Toán trong Luau
local npcAttributes = {"strong", "intelligent"}print(npcAttributes[1]) -- Hiển thị 'mạnh mẽ'print(#npcAttributes) -- Hiển thị kích thước của danh sách-- Thêm vào danh sáchtable.insert(npcAttributes, "humble")-- Cách khác ...npcAttributes[#npcAttributes+1] = "humble"-- Nhúc vào đầu danh sáchtable.insert(npcAttributes, 1, "brave")-- Loại bỏ một mục tại một chỉ mục cụ thểtable.remove(npcAttributes, 3)
Numerically-Indexed Tables in C#
List npcAttributes = new List{"strong", "intelligent"};Console.WriteLine(npcAttributes[0]); // Outputs 'strong'Console.WriteLine(npcAttributes.Count); // Outputs the size of the list// Append to the listnpcAttributes.Add("humble");// Another way...npcAttributes.Insert(npcAttributes.Count, "humble");// Insert at the beginning of the listnpcAttributes.Insert(0, "brave");// Remove item at a given indexnpcAttributes.Remove(2);
Người vận hành
Các Operator Điều Kiện
Người vận hành | Tiếng Việt | C# |
---|---|---|
Bằng | == | == |
Lớn hơn | > | > |
Dưới | < | < |
Lớn hơn hoặc bằng | >= | >= |
Dưới hay Bằng | <= | <= |
Không bằng | ~= | != |
Và | and | && |
Hoặc | or | || |
Các Operator Toán Học
Tiếng Việt | C# | |
---|---|---|
Thêm | + | + |
Tách | - | - |
Tăng tốc | * | * |
Sư đoàn | / | / |
Hệ | % | % |
Biểu tượng | ^ | ** |
Biến
Ở Luau, các biến không định loại của họ khi bạn tuyên bố chúng. Các biến Luau không có modifier truy cập, mặc dù bạn có thể kết hợp " riêng tư"变体 với dấu chấm câu cho đọc.
Biến trong Luau
local stringVariable = "value"-- Tuyên bố "công khai"local variableName-- Tuyên bố "riêng tư" - đã phân tích theo cùng một cáchlocal _variableName
Variables in C#
string stringVariable = "value";// Public declarationpublic string variableName// Private declarationstring variableName;
Tầm nhìn
Ở Luau, bạn có thể viết biến và logic trong một phạm vi chặt chẽ hơn chức năng hoặc lớp của chúng bằng cách ghép nhúc nhích trong các thẻ do và end tương tự như các dấu chấm câu {} trong C#. Để biết thêm chi
Lập trình trong Luau
local outerVar = 'Outer scope text'do-- Điều chỉnh 'outerVar'outerVar = 'Inner scope modified text'-- Giới thiệu một biến đổi địa phươnglocal innerVar = 'Inner scope text'print('1: ' .. outerVar) -- prints "1: Inner scope modified text"print('2: ' .. innerVar) -- prints "2: Inner scope text"endprint('3: ' .. outerVar) -- prints "3: "Văn bản chỉnh sửa phạm vi nội bên"-- Attempting to print 'innerVar' here would fail
Scoping in C#
var outerVar = "Outer scope text";{// Modify 'outerVar'outerVar = "Inner scope modified text";// Introduce a local variablevar innerVar = "Inner scope text";Console.WriteLine("1: " + outerVar); // prints "1: Inner scope modified text"Console.WriteLine("2: " + innerVar); // prints "2: Inner scope text"}Console.WriteLine("3: " + outerVar); // prints "3: "Inner scope modified text"// Attempting to print 'innerVar' here would fail
Những tuyên bố điều kiện
Các biểu tượng điều kiện ở Luau
-- Một điều kiệnif boolExpression thendoSomething()end-- Nhiều điều kiệnif not boolExpression thendoSomething()elseif otherBoolExpression thendoSomething()elsedoSomething()end
Conditional Statements in C#
// One conditionif (boolExpression) {doSomething();}// Multiple conditionsif (!boolExpression) {doSomething();}else if (otherBoolExpression) {doSomething();}else {doSomething();}
Người Operator Điều Kiện
Người dùng điều kiện trong Luau
local max = if x > y then x else y
Conditional Operator in C#
int max = (x > y) ? x : y;
Vòng lặp
Để tìm hiểu thêm về các lỗ hổng trong Luau, xem Cấu trúc điều khiển .
Khi và lặp lại các lỗ
Lặp lại và Lặp lại while và loop trong Luau
while boolExpression dodoSomething()endrepeatdoSomething()until not boolExpression
While and Repeat Loops in C#
while (boolExpression) {doSomething();}do {doSomething();} while (boolExpression)
Đối với các lỗ
Thông thường cho vòng lặp trong Luau
-- Vòng lặp tiếp theofor i = 1, 10 dodoSomething()end-- Đảo ngược lạifor i = 10, 1, -1 dodoSomething()end
Generic For Loops in C#
// Forward loopfor (int i = 1; i <= 10; i++) {doSomething();}// Reverse loopfor (int i = 10; i >= 1; i--) {doSomething();}
Đối với các lỗ trên bảng trong Luau
local 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
For Loops Over Lists in 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ợ iteration generalized, làm cho công việc với các bảng đơn giản hơn.
Hàm
Để tìm hiểu thêm về các hàm trong Luau, xem Hàm .
Hàm chung vui vẻ
Các chức năng genéric trong Luau
-- Hàm chung
local function increment(number)
return number + 1
end
Generic Functions in C#
// Generic function
int increment(int number) {
return number + 1;
}
Số lượng biến đổi
Biến Số Dữ Liệu Biến Số trong Luau
-- Số lượng biến đổi
local function variableArguments(...)
print(...)
end
Variable Argument Number in C#
// Variable argument number
void variableArguments(params string[] inventoryItems) {
for (item in inventoryItems) {
Console.WriteLine(item);
}
}
Các biến được đặt tên
Các biến đổi có tên trong Luau
-- Các biến tên
local function namedArguments(args)
return args.name .. "'s birthday: " .. args.dob
end
namedArguments{name="Bob", dob="4/1/2000"}
Named Arguments in C#
// Named arguments
string namedArguments(string name, string dob) {
return name + "'s birthday: " + dob;
}
namedArguments(name: "Bob", dob: "4/1/2000");
Các Cấu hình Cố gắng-Lấy
Thử nghiệm/bắt bẻ Cơ sở dữ liệu trong Luau
local function fireWeapon()
if not weaponEquipped then
error("No weapon equipped!")
end
-- Tiến hành...
end
local success, errorMessage = pcall(fireWeapon)
if not success then
print(errorMessage)
end
Try/Catch Structures in C#
void fireWeapon() {
if (!weaponEquipped) {
// Use a user-defined exception
throw new InvalidWeaponException("No weapon equipped!");
}
// Proceed...
}
try {
fireWeapon();
} catch (InvalidWeaponException ex) {
// An error was raised
}