Luau 및 C# 비교

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

Roblox는 Luau 프로그래밍 언어를 사용합니다. 다음 코드 샘플 및 테이블에서는 C#과 Luau 사이의 몇 가지 차이점을 나타냅니다.

줄 끝

Luau에서는 따옴표가 필요 없지만 구문을 위반하지는 않습니다.

예약 키워드

다음 표에는 Luau의 예약 키워드가 C# 대상에 대해 매핑되어 있습니다. 모든 C# 키워드를 표시하지는 않지만 참조하십시오.

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

코멘트

Luau에 대한 의견

-- 단일 줄 코멘트를 달다/남기다, 의견을 내다
--[[ 결과 출력:
Block comment
--]]
Comments in C#

// Single line comment
/*
Block comment
*/

문자열

Luau의 문자열

-- 다중 줄 문자열
local multiLineString = [[This is a string that,
when printed, appears
on multiple lines]]
-- 합쳐기
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;

테이블

Luau의 테이블에 대해 자세히 알아보려면 테이블을 참조하십시오.

사전 테이블

Luau의 테이블은 C#과 같은 사전을 사용할 수 있습니다.

Luau의 사전 테이블

local dictionary = {
val1 = "this",
val2 = "is"
}
print(dictionary.val1) -- 이 출력
print(dictionary["val1"]) -- 이 출력
dictionary.val1 = nil -- 테이블에서 'val1' 제거
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

숫자 지정 테이블

테이블은 C#과 마찬가지로 루아에서 배열로 사용할 수 있습니다. 인덱스는 1 에서 시작하며 루아에서 0 에서 시작합니다.

Luau의 숫자 지정 테이블

local npcAttributes = {"strong", "intelligent"}
print(npcAttributes[1]) -- 출력 '강한'
print(#npcAttributes) -- 목록의 크기를 출력합니다.
-- 목록에 추가
table.insert(npcAttributes, "humble")
-- 다른 방법...
npcAttributes[#npcAttributes+1] = "humble"
-- 목록의 시작 부분에 삽입
table.insert(npcAttributes, 1, "brave")
-- 지정된 인덱스에서 항목 삭제
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);

연산자

조건부 연산자

운영자루아C#
동일====
큰 것보다>>
적어<<
큰 것보다 또는 같다>=>=
적거나 같은<=<=
다음과 같지 않습니다.~=!=
그리고and&&
또는or||

연산자

루아C#
추가++
뺄셈--
배수**
분할//
모듈%%
익스포넌트^**

변수

Luau에서는 변수를 선언할 때 유형을 지정하지 않습니다. Luau 변수에는 읽기 편의를 위해 대시를 사용하여 접두할 수 있는 "개인" 변수가 없지만, 읽기 편의를 위해 대시를 사용하여 접두할 수 있는 "비공개" 변수가 있습니다.

Luau의 변수

local stringVariable = "value"
-- 공개 선언
local variableName
-- “개인” 선언 - 동일한 방식으로 구문 분석
local _variableName
Variables in C#

string stringVariable = "value";
// Public declaration
public string variableName
// Private declaration
string variableName;

범위

In Luau, 당신은 로직과 클래스 내에서 함수나 클래스보다 좁은 범위에서 변수 및 로직을 작성할 수 있습니다 doend 키워드를 중첩하여 쿼리 {} 내에서 더 자세한 세부 정보를 참조하십시오. For more details, see <

Luau에서 범위 지정

local outerVar = 'Outer scope text'
do
-- 외부 변수 수정
outerVar = 'Inner scope modified text'
-- 로컬 변수 소개
local innerVar = 'Inner scope text'
print('1: ' .. outerVar) -- prints "1: Inner scope modified text"
print('2: ' .. innerVar) -- prints "2: Inner scope text"
end
print('3: ' .. outerVar) -- 인쇄합니다 "3: "Inner scope modified text"
-- 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

조건부 문

Luau의 조건부 문

-- 하나의 조건
if boolExpression then
doSomething()
end
-- 여러 조건
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();
}

조건부 연산자

Luau의 조건부 연산자

local max = if x > y then x else y
Conditional Operator in C#

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

루프

루au의 루프에 대해서는 제어 구조를 참조하십시오.

반복 루프와 잠깐 대기

루아에서 반복 루프 사용 while and repeat 루프

while boolExpression do
doSomething()
end
repeat
doSomething()
until not boolExpression
While and Repeat Loops in C#

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

루프용

루아에서 루프 제네릭

-- 앞으로 루프
for i = 1, 10 do
doSomething()
end
-- 리버스 루프
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();
}
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는 또한 일반화된 반복을 지원하여 테이블과 작업을 간소화합니다.

함수

Luau의 함수에 대해 자세히 알아보려면 함수를 참조하십시오.

일반 함수

Luau의 일반 함수

-- 제네릭 함수
local function increment(number)
return number + 1
end
Generic Functions in C#

// Generic function
int increment(int number) {
return number + 1;
}

변수 인수 번호

Luau의 변수 인수 번호

-- 변수 인수 번호
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);
}
}

명명된 인수

Luau의 명명된 인수

-- 명명된 인수
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");

구조 시도-캐치

Luau에서 구조/캐치 시도/포획

local function fireWeapon()
if not weaponEquipped then
error("No weapon equipped!")
end
-- 계속하기...
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
}