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. Berikut adalah beberapa contoh kode dan tabel yang menunjukkan beberapa perbedaan antara syntax untuk C# dan Luau.

Akhir Garis

Anda tidak memerlukan semikolon di Luau, tetapi mereka tidak menghancurkan syntax.

Kata-Kata yang Dipersilakan

Tabel berikut menunjukkan kata kunci C# yang direservasi ke C# mereka. Catat bahwa itu tidak menunjukkan semua kata kunci C#.

LuaC#
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 satis satu komen
--[[ HasilOutput:
Block comment
--]]
Comments in C#

// Single line comment
/*
Block comment
*/

Tali

String di Luau

-- Tali string
local multiLineString = [[This is a string that,
when printed, appears
on multiple lines]]
-- Kontrasenasi
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;

Tabel

Untuk mempelajari lebih lanjut tentang tabel di Luau, lihat Tabel .

Tabel Kamus

Anda dapat menggunakan tabel di Luau seperti kamus seperti di C#.

Tabel Kamus di Luau

local dictionary = {
val1 = "this",
val2 = "is"
}
print(dictionary.val1) -- Output 'ini'
print(dictionary["val1"]) -- Output '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-Índeks Numerik

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

Tabel-Índeks Numerik di Luau

local npcAttributes = {"strong", "intelligent"}
print(npcAttributes[1]) -- Output 'kuat'
print(#npcAttributes) -- Menyajikan 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 di indeks yang diberikan
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);

Pengoperasional

Operator Bersyarat

OperatorLuaC#
Sama dengan====
Lebih Besar Dari>>
Kurang dari<<
Lebih Besar dari atau Sama dengan>=>=
Kurang dari atau Sama dengan<=<=
Tidak Sama Dengan~=!=
Danand&&
Atauor||

Operator Aritmatika

LuaC#
Tambahan++
Penghapusan--
Pengganda**
Pembagian//
Modul%%
Eksponensi^**

Variabel

Di Luau, variabel tidak menentukan jenis mereka saat Anda menyatakannya. Variabel Luau tidak memiliki modifikator akses, meskipun Anda dapat menambahkan "privat" variabel dengan tanda bawah untuk keserbagunaan baca.

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;

Penglihatan

Di Luau, Anda dapat menulis variabel dan logika dalam skala yang lebih ketat daripada fungsi atau kelas mereka dengan menyisipkan logika di dalam do dan end kata kunci, mirip dengan curly brackets {} di C#. Untuk lebih banyak rincian, lihat 1> Scope1> .

Mengambil Luas

local outerVar = 'Outer scope text'
do
-- Modifikasi 'outerVar'
outerVar = 'Inner scope modified text'
-- Mengenalkan variabel lokal
local innerVar = 'Inner scope text'
print('1: ' .. outerVar) -- mengeprint "1: Inner scope modified text"
print('2: ' .. innerVar) -- mengeprint "2: Inner scope text"
end
print('3: ' .. outerVar) -- mengeprint "3: "テキストスコープ修正済み印刷"
-- 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 Kondisional

Pernyataan Kondisional di Luau

-- Satu kondisi
if boolExpression then
doSomething()
end
-- Banyak kondisi
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 Bersyarat

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 Ulang Loop

Sementara dan Ulang Loop 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 Loops di Luau

-- Lewati loop
for i = 1, 10 do
doSomething()
end
-- Reverse loop
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 Loops 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 memudahkan 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;
}

Jumlah Argument Variabel

Argumen Variabel di Luau

-- Nilai 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 Bersifat Nama

Argumen Bersifat Nama 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");

Mencoba Menangkap Struktur

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
}