Roblox menggunakan bahasa pemrograman Luau. Sample kode dan tabel berikut menunjukkan beberapa perbedaan antara sintaks untuk C# dan Luau.
Akhiran baris
Anda tidak perlu menambahkan titik koma di Luau, tetapi itu tidak merusak sintaks.
Kata kunci yang dipreservasi
Tabel berikut berisi kata kunci yang dipreservasi di Luau yang dipetakan ke padanannya di C#. Perhatikan bahwa tabel ini tidak menunjukkan semua kata kunci C#.
| Luau | C# |
|---|---|
| and | |
| break | break |
| do | do |
| if | if |
| else | else |
| elseif | else if |
| then | |
| end | |
| true | true |
| false | false |
| for | for atau foreach |
| function | |
| in | in |
| local | |
| nil | null |
| not | |
| or | |
| repeat | |
| return | return |
| until | |
| while | while |
Komentar
-- Komentar satu baris
--[[ Output yang dihasilkan:
Komponen komentar
--]]// Komentar satu baris
/*
Komponen komentar
*/String
-- String multi-baris
local multiLineString = [[Ini adalah string yang,
ketika dicetak, muncul
di beberapa baris]]
-- Penggabungan
local s1 = "Ini adalah string "
local s2 = "dibuat dengan dua bagian."
local endString = s1 .. s2// String multi-baris
string multiLineString1 = "Ini adalah string yang,\nketika dicetak, muncul\n di beberapa baris.";
string multiLineString2 = @"Ini adalah string yang,
ketika dicetak, muncul
di beberapa baris";
// Penggabungan
string s1 = "Ini adalah string ";
string s2 = "dibuat dengan dua bagian.";
string endString = s1 + s2;Tabel
Untuk belajar lebih lanjut tentang tabel di Luau, lihat Tabel.
Tabel Kamus
Anda dapat menggunakan tabel di Luau sebagai kamus seperti di C#.
local dictionary = {
val1 = "ini",
val2 = "adalah"
}
print(dictionary.val1) -- Mengeluarkan 'ini'
print(dictionary["val1"]) -- Mengeluarkan 'ini'
dictionary.val1 = nil -- Menghapus 'val1' dari tabel
dictionary["val3"] = "sebuah kamus" -- Menimpa 'val3' atau mengatur pasangan kunci-nilai baruDictionary dictionary = new Dictionary()
{
{ "val1", "ini" },
{ "val2", "adalah" }
};
Console.WriteLine(dictionary["val1"]); // Mengeluarkan 'ini'
dictionary.Remove("val1"); // Menghapus 'val1' dari kamus
dictionary["val3"] = "sebuah kamus"; // Menimpa 'val3' atau mengatur pasangan kunci-nilai baru
dictionary.Add("val3", "sebuah kamus"); // Membuat pasangan kunci-nilai baruTabel dengan Indeks Numerik
Anda dapat menggunakan tabel di Luau sebagai array seperti di C#. Indeks dimulai dari 1 di Luau dan 0 di C#.
local npcAttributes = {"kuat", "cerdas"}
print(npcAttributes[1]) -- Mengeluarkan 'kuat'
print(#npcAttributes) -- Mengeluarkan ukuran daftar
-- Tambahkan ke daftar
table.insert(npcAttributes, "rendah hati")
-- Cara lain...
npcAttributes[#npcAttributes+1] = "rendah hati"
-- Menyisipkan di awal daftar
table.insert(npcAttributes, 1, "berani")
-- Menghapus item di indeks tertentu
table.remove(npcAttributes, 3)List npcAttributes = new List{"kuat", "cerdas"};
Console.WriteLine(npcAttributes[0]); // Mengeluarkan 'kuat'
Console.WriteLine(npcAttributes.Count); // Mengeluarkan ukuran daftar
// Tambahkan ke daftar
npcAttributes.Add("rendah hati");
// Cara lain...
npcAttributes.Insert(npcAttributes.Count, "rendah hati");
// Menyisipkan di awal daftar
npcAttributes.Insert(0, "berani");
// Menghapus item di indeks tertentu
npcAttributes.Remove(2);Operator
Operator Kondisional
| Operator | Luau | C# |
|---|---|---|
| Setara Dengan | == | == |
| Lebih Besar Dari | > | > |
| Kurang Dari | < | < |
| Lebih Besar Dari atau Setara Dengan | >= | >= |
| Kurang Dari atau Setara Dengan | <= | <= |
| Tidak Setara Dengan | ~= | != |
| Dan | and | && |
| Atau | or | || |
Operator Aritmatika
| Luau | C# | |
|---|---|---|
| Pertambahan | + | + |
| Pengurangan | - | - |
| Perkalian | * | * |
| Pembagian | / | / |
| Modulus | % | % |
| Pangkat | ^ | ** |
Variabel
Di Luau, variabel tidak menentukan jenisnya saat Anda mendeklarasikannya. Variabel Luau tidak memiliki modifikator akses, meskipun Anda dapat memberikan awalan "private" pada variabel dengan garis bawah untuk keterbacaan.
local stringVariable = "nilai"
-- Deklarasi "Publik"
local variableName
-- Deklarasi "Pribadi" - diparsing dengan cara yang sama
local _variableNamestring stringVariable = "nilai";
// Deklarasi Publik
public string variableName
// Deklarasi Pribadi
string variableName;Ruang Lingkup
Di Luau, Anda bisa menulis variabel dan logika dalam ruang lingkup yang lebih ketat daripada fungsi atau kelas mereka dengan menumpuk logika dalam do dan end, mirip dengan kurung kurawal {} di C#. Untuk detail lebih lanjut, lihat Ruang Lingkup.
local outerVar = 'Teks ruang lingkup luar'
do
-- Modifikasi 'outerVar'
outerVar = 'Teks dimodifikasi ruang lingkup dalam'
-- Memperkenalkan variabel lokal
local innerVar = 'Teks ruang lingkup dalam'
print('1: ' .. outerVar) -- mencetak "1: Teks dimodifikasi ruang lingkup dalam"
print('2: ' .. innerVar) -- mencetak "2: Teks ruang lingkup dalam"
end
print('3: ' .. outerVar) -- mencetak "3: Teks dimodifikasi ruang lingkup dalam"
-- Mencoba mencetak 'innerVar' di sini akan gagalvar outerVar = "Teks ruang lingkup luar";
{
// Modifikasi 'outerVar'
outerVar = "Teks dimodifikasi ruang lingkup dalam";
// Memperkenalkan variabel lokal
var innerVar = "Teks ruang lingkup dalam";
Console.WriteLine("1: " + outerVar); // mencetak "1: Teks dimodifikasi ruang lingkup dalam"
Console.WriteLine("2: " + innerVar); // mencetak "2: Teks ruang lingkup dalam"
}
Console.WriteLine("3: " + outerVar); // mencetak "3: Teks dimodifikasi ruang lingkup dalam"
// Mencoba mencetak 'innerVar' di sini akan gagalPernyataan Kondisional
-- Satu kondisi
if boolExpression then
doSomething()
end
-- Beberapa kondisi
if not boolExpression then
doSomething()
elseif otherBoolExpression then
doSomething()
else
doSomething()
end// Satu kondisi
if (boolExpression) {
doSomething();
}
// Beberapa kondisi
if (!boolExpression) {
doSomething();
}
else if (otherBoolExpression) {
doSomething();
}
else {
doSomething();
}Operator Kondisional
local max = if x > y then x else yint max = (x > y) ? x : y;Loop
Untuk belajar lebih lanjut tentang loop di Luau, lihat Kontrol Struktur.
Loop While dan Repeat
while boolExpression do
doSomething()
end
repeat
doSomething()
until not boolExpressionwhile (boolExpression) {
doSomething();
}
do {
doSomething();
} while (boolExpression)Loop For
-- Loop maju
for i = 1, 10 do
doSomething()
end
-- Loop mundur
for i = 10, 1, -1 do
doSomething()
end// Loop maju
for (int i = 1; i <= 10; i++) {
doSomething();
}
// Loop mundur
for (int i = 10; i >= 1; i--) {
doSomething();
}local abcList = {"a", "b", "c"}
for i, v in ipairs(abcList) do
print(v)
end
local abcDictionary = { a=1, b=2, c=3 }
for k, v in pairs(abcDictionary) do
print(k, v)
endList<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 semakin menyederhanakan bekerja dengan tabel.
Fungsi
Untuk belajar lebih lanjut tentang fungsi di Luau, lihat Fungsi.
Fungsi Umum
-- Fungsi umum
local function increment(number)
return number + 1
end// Fungsi umum
int increment(int number) {
return number + 1;
}Jumlah Argumen Variabel
-- Jumlah argumen variabel
local function variableArguments(...)
print(...)
end// Jumlah argumen variabel
void variableArguments(params string[] inventoryItems) {
for (item in inventoryItems) {
Console.WriteLine(item);
}
}Argumen Bernama
-- Argumen bernama
local function namedArguments(args)
return args.name .. "'s birthday: " .. args.dob
end
namedArguments{name="Bob", dob="4/1/2000"}// Argumen bernama
string namedArguments(string name, string dob) {
return name + "'s birthday: " + dob;
}
namedArguments(name: "Bob", dob: "4/1/2000");Struktur Try-catch
local function fireWeapon()
if not weaponEquipped then
error("Tidak ada senjata yang dipasang!")
end
-- Melanjutkan...
end
local success, errorMessage = pcall(fireWeapon)
if not success then
print(errorMessage)
endvoid fireWeapon() {
if (!weaponEquipped) {
// Menggunakan pengecualian yang ditentukan pengguna
throw new InvalidWeaponException("Tidak ada senjata yang dipasang!");
}
// Melanjutkan...
}
try {
fireWeapon();
} catch (InvalidWeaponException ex) {
// Sebuah kesalahan telah terjadi
}