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

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

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 baris
local multiLineString = [[This is a string that,
when printed, appears
on multiple lines]]
-- Konjungsi
local s1 = "This is a string "
local s2 = "made with two parts."
local endString = s1 .. s2
Strings in C#

// Multi-line string
string multiLineString1 = "This is a string that,\nwhen printed, appears\n on multiple lines.";
string multiLineString2 = @"This is a string that,
when printed, appears
on multiple lines";
// Concatenation
string 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 tabel
dictionary["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 dictionary
dictionary["val3"] = "a dictionary"; // Overwrites 'val3' or sets new key-value pair
dictionary.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 daftar
table.insert(npcAttributes, "humble")
-- Cara lain ...
npcAttributes[#npcAttributes+1] = "humble"
-- Sisipkan di awal daftar
table.insert(npcAttributes, 1, "brave")
-- Hapus item pada indeks tertentu
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 list
npcAttributes.Add("humble");
// Another way...
npcAttributes.Insert(npcAttributes.Count, "humble");
// Insert at the beginning of the list
npcAttributes.Insert(0, "brave");
// Remove item at a given index
npcAttributes.Remove(2);

Operasi

Operasi kondisional

PengoperatorLuawuC#
Sama dengan====
Lebih Besar dari>>
Kurang dari<<
Lebih Besar dari atau Sama dengan>=>=
Kurang dari atau Sama dengan<=<=
Tidak Sama Dengan~=!=
Danand&&
Oror||

Operasi aritmatik

LuauC#
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 sama
local _variableName
Variables in C#

string stringVariable = "value";
// Public declaration
public string variableName
// Private declaration
string 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 lokal
local innerVar = 'Inner scope text'
print('1: ' .. outerVar) -- menampilkan "1: Teks modifikasi lingkup internal"
print('2: ' .. innerVar) -- menampilkan "2: Teks lingkup internal"
end
print('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 variable
var 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 kondisi
if boolExpression then
doSomething()
end
-- Kondisi banyak
if not boolExpression then
doSomething()
elseif otherBoolExpression then
doSomething()
else
doSomething()
end
Conditional Statements in C#

// One condition
if (boolExpression) {
doSomething();
}
// Multiple conditions
if (!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 do
doSomething()
end
repeat
doSomething()
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 depan
for i = 1, 10 do
doSomething()
end
-- Lingkaran terbalik
for i = 10, 1, -1 do
doSomething()
end
Generic For Loops in C#

// Forward loop
for (int i = 1; i <= 10; i++) {
doSomething();
}
// Reverse loop
for (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) do
print(v)
end
local abcDictionary = { a=1, b=2, c=3 }
for k, v in pairs(abcDictionary) do
print(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
}