Roblox menggunakan bahasa pemrograman Luau. Sampel kode dan tabel berikut menunjukkan beberapa perbedaan antara sintaks untuk C# dan Luau.
Akhir baris
Anda tidak memerlukan semikolon di Luau, tetapi mereka tidak melanggar sintaks.
Kata kunci yang disimpan
Tabel berikut memiliki kata kunci terjeda Luau yang dikaitkan dengan kata kunci C# setara. Perhatikan bahwa itu tidak menunjukkan semua kata kunci C#.
Luawu | C# |
---|---|
and | |
break | break |
do | do |
if | if |
else | else |
elseif | else if |
then | |
end | |
true | true |
false | false |
for | for or foreach |
function | |
in | in |
local | |
nil | null |
not | |
or | |
repeat | |
return | return |
until | |
while | while |
Umpan Balik
Komentar di Luau
-- Komentar satu komen--[[ Hasil keluaran:Block comment--]]
Comments in C#
// Single line comment/*Block comment*/
String
String di Luau
-- stringmulti barislocal multiLineString = [[This is a string that,when printed, appearson multiple lines]]-- Konjungsilocal 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;
Meja
Untuk mempelajari lebih lanjut tentang tabel di Luau, lihat Tabel.
Tabel kamus
Anda dapat menggunakan tabel di Luau sebagai kamus seperti di C#.
Meja Kamus di Luau
local dictionary = {val1 = "this",val2 = "is"}print(dictionary.val1) -- Mengeluarkan 'ini'print(dictionary["val1"]) -- Mengeluarkan 'ini'dictionary.val1 = nil -- Menghapus 'val1' dari tabeldictionary["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
Tabel yang diindeks numerik
Anda dapat menggunakan tabel di Luau sebagai array seperti di C#. Indeks dimulai pada 1 di Luau dan 0 di C#.
Tabel Berindeks Numerik di Luau
local npcAttributes = {"strong", "intelligent"}print(npcAttributes[1]) -- Keluarkan 'kuat'print(#npcAttributes) -- Keluarkan ukuran daftar-- Tambahkan ke daftartable.insert(npcAttributes, "humble")-- Cara lain ...npcAttributes[#npcAttributes+1] = "humble"-- Sisipkan di awal daftartable.insert(npcAttributes, 1, "brave")-- Hapus item pada indeks tertentutable.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);
Operasi
Operasi kondisional
Pengoperator | Luawu | C# |
---|---|---|
Sama dengan | == | == |
Lebih Besar dari | > | > |
Kurang dari | < | < |
Lebih Besar dari atau Sama dengan | >= | >= |
Kurang dari atau Sama dengan | <= | <= |
Tidak Sama Dengan | ~= | != |
Dan | and | && |
Or | or | || |
Operasi aritmatik
Luau | C# | |
---|---|---|
Tambahan | + | + |
Pengurangan | - | - |
Penggandaan | * | * |
Pembagian | / | / |
Modul | % | % |
Eksponensialasi | ^ | ** |
Variabel
Di Luau, variabel tidak menentukan jenisnya saat Anda menyatakannya.Variabel Luau tidak memiliki modifikasi akses, meskipun Anda dapat menambahkan pr prefiks "privat" dengan garis bawah untuk dibaca.
Variabel di Luau
local stringVariable = "value"-- Deklarasi "Publik"local variableName-- Deklarasi "Pribadi" - diproses dengan cara yang samalocal _variableName
Variables in C#
string stringVariable = "value";// Public declarationpublic string variableName// Private declarationstring variableName;
Skop
Di Luau, Anda dapat menulis variabel dan logika dalam lingkup yang lebih ketat daripada fungsi atau kelas mereka dengan menggabungkan logika dalam do dan end kata kunci, mirip dengan kurpih braket {} di C#.Untuk lebih banyak rincian, lihat Scope .
Pemetaan di Luau
local outerVar = 'Outer scope text'do-- Modifikasi 'outerVar'outerVar = 'Inner scope modified text'-- Memperkenalkan variabel lokallocal innerVar = 'Inner scope text'print('1: ' .. outerVar) -- menampilkan "1: Teks modifikasi lingkup internal"print('2: ' .. innerVar) -- menampilkan "2: Teks lingkup internal"endprint('3: ' .. outerVar) -- menampilkan "3: "Teks modifikasi lingkup internal"-- 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
Pernyataan kondicional
Pernyataan Kondicional di Luau
-- Satu kondisiif boolExpression thendoSomething()end-- Kondisi banyakif 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();}
Operator kondisi
Operator Kondisional di Luau
local max = if x > y then x else y
Conditional Operator in C#
int max = (x > y) ? x : y;
Lingkaran
Untuk mempelajari lebih lanjut tentang loop di Luau, lihat Struktur Kontrol.
Sementara dan ulangi loop
Sementara dan Ulangi Lingkaran di Luau
while boolExpression dodoSomething()endrepeatdoSomething()until not boolExpression
While and Repeat Loops in C#
while (boolExpression) {doSomething();}do {doSomething();} while (boolExpression)
Untuk loop
Umum untuk Lingkaran di Luau
-- Lingkaran ke depanfor i = 1, 10 dodoSomething()end-- Lingkaran terbalikfor 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();}
Untuk Lingkaran di Atas Tabel di 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 juga mendukung iterasi umum , yang lebih mempermudah bekerja dengan tabel.
Fungsi
Untuk mempelajari lebih lanjut tentang fungsi di Luau, lihat Fungsi.
Fungsi umum
Fungsi Umum di Luau
-- Fungsi umum
local function increment(number)
return number + 1
end
Generic Functions in C#
// Generic function
int increment(int number) {
return number + 1;
}
Nomor argumen variabel
Angka Argumen Variabel di Luau
-- Nomor argumen variabel
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);
}
}
Argumen bernama
Argumen Bernama di Luau
-- Argumen bernama
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");
Struktur menangkap coba
Coba/Tangkap Struktur di Luau
local function fireWeapon()
if not weaponEquipped then
error("No weapon equipped!")
end
-- Lanjutkan...
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
}