Perbandingan Luau dan C#

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

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#.

LuauC#
and
breakbreak
dodo
ifif
elseelse
elseifelse if
then
end
truetrue
falsefalse
forfor atau foreach
function
inin
local
nilnull
not
or
repeat
returnreturn
until
whilewhile

Komentar

Komentar di Luau

-- Komentar satu baris
--[[ Output yang dihasilkan:
Komponen komentar
--]]
Komentar di C#

// Komentar satu baris
/*
Komponen komentar
*/

String

String di Luau

-- 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 di C#

// 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#.

Tabel Kamus di Luau

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 baru
Tabel Kamus di C#

Dictionary 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 baru

Tabel dengan Indeks Numerik

Anda dapat menggunakan tabel di Luau sebagai array seperti di C#. Indeks dimulai dari 1 di Luau dan 0 di C#.

Tabel dengan Indeks Numerik di Luau

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)
Tabel dengan Indeks Numerik di C#

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

OperatorLuauC#
Setara Dengan====
Lebih Besar Dari>>
Kurang Dari<<
Lebih Besar Dari atau Setara Dengan>=>=
Kurang Dari atau Setara Dengan<=<=
Tidak Setara Dengan~=!=
Danand&&
Atauor||

Operator Aritmatika

LuauC#
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.

Variabel di Luau

local stringVariable = "nilai"
-- Deklarasi "Publik"
local variableName
-- Deklarasi "Pribadi" - diparsing dengan cara yang sama
local _variableName
Variabel di C#

string 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.

Ruang Lingkup di Luau

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 gagal
Ruang Lingkup di C#

var 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 gagal

Pernyataan Kondisional

Pernyataan Kondisional di Luau

-- Satu kondisi
if boolExpression then
doSomething()
end
-- Beberapa kondisi
if not boolExpression then
doSomething()
elseif otherBoolExpression then
doSomething()
else
doSomething()
end
Pernyataan Kondisional di C#

// Satu kondisi
if (boolExpression) {
doSomething();
}
// Beberapa kondisi
if (!boolExpression) {
doSomething();
}
else if (otherBoolExpression) {
doSomething();
}
else {
doSomething();
}

Operator Kondisional

Operator Kondisional di Luau

local max = if x > y then x else y
Operator Kondisional di C#

int max = (x > y) ? x : y;

Loop

Untuk belajar lebih lanjut tentang loop di Luau, lihat Kontrol Struktur.

Loop While dan Repeat

Loop While dan Repeat di Luau

while boolExpression do
doSomething()
end
repeat
doSomething()
until not boolExpression
Loop While dan Repeat di C#

while (boolExpression) {
doSomething();
}
do {
doSomething();
} while (boolExpression)

Loop For

Loop For Umum di Luau

-- Loop maju
for i = 1, 10 do
doSomething()
end
-- Loop mundur
for i = 10, 1, -1 do
doSomething()
end
Loop For Umum di C#

// Loop maju
for (int i = 1; i <= 10; i++) {
doSomething();
}
// Loop mundur
for (int i = 10; i >= 1; i--) {
doSomething();
}
Loop For atas Tabel di Luau

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)
end
Loop For atas Daftar di 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 semakin menyederhanakan bekerja dengan tabel.

Fungsi

Untuk belajar lebih lanjut tentang fungsi di Luau, lihat Fungsi.

Fungsi Umum

Fungsi Umum di Luau

-- Fungsi umum
local function increment(number)
return number + 1
end
Fungsi Umum di C#

// Fungsi umum
int increment(int number) {
return number + 1;
}

Jumlah Argumen Variabel

Jumlah Argumen Variabel di Luau

-- Jumlah argumen variabel
local function variableArguments(...)
print(...)
end
Jumlah Argumen Variabel di C#

// Jumlah argumen variabel
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"}
Argumen Bernama di C#

// Argumen bernama
string namedArguments(string name, string dob) {
return name + "'s birthday: " + dob;
}
namedArguments(name: "Bob", dob: "4/1/2000");

Struktur Try-catch

Struktur Try/Catch di Luau

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)
end
Struktur Try/Catch di C#

void 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
}
©2026 Roblox Corporation. Roblox, logo Roblox, dan Powering Imagination termasuk dalam merek dagang kami yang terdaftar dan tidak terdaftar di AS dan negara lainnya.