Roblox는 Luau 프로그래밍 언어를 사용합니다. 다음 코드 샘플 및 테이블에서는 C#과 Luau 사이의 몇 가지 차이점을 나타냅니다.
줄 끝
Luau에서는 따옴표가 필요 없지만 구문을 위반하지는 않습니다.
예약 키워드
다음 표에는 Luau의 예약 키워드가 C# 대상에 대해 매핑되어 있습니다. 모든 C# 키워드를 표시하지는 않지만 참조하십시오.
루아 | C# |
---|---|
and | |
break | break |
do | do |
if | if |
else | else |
elseif | else if |
then | |
end | |
true | true |
false | false |
for | for 또는 foreach |
function | |
in | in |
local | |
nil | null |
not | |
or | |
repeat | |
return | return |
until | |
while | while |
코멘트
Luau에 대한 의견
-- 단일 줄 코멘트를 달다/남기다, 의견을 내다--[[ 결과 출력:Block comment--]]
Comments in C#
// Single line comment/*Block comment*/
문자열
Luau의 문자열
-- 다중 줄 문자열local multiLineString = [[This is a string that,when printed, appearson multiple lines]]-- 합쳐기local s1 = "This is a string "local s2 = "made with two parts."local endString = s1 .. s2
Strings in C#
// Multi-line stringstring multiLineString1 = "This is a string that,\nwhen printed, appears\n on multiple lines.";string multiLineString2 = @"This is a string that,when printed, appearson multiple lines";// Concatenationstring 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 dictionarydictionary["val3"] = "a dictionary"; // Overwrites 'val3' or sets new key-value pairdictionary.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 listnpcAttributes.Add("humble");// Another way...npcAttributes.Insert(npcAttributes.Count, "humble");// Insert at the beginning of the listnpcAttributes.Insert(0, "brave");// Remove item at a given indexnpcAttributes.Remove(2);
연산자
조건부 연산자
운영자 | 루아 | C# |
---|---|---|
동일 | == | == |
큰 것보다 | > | > |
적어 | < | < |
큰 것보다 또는 같다 | >= | >= |
적거나 같은 | <= | <= |
다음과 같지 않습니다. | ~= | != |
그리고 | and | && |
또는 | or | || |
연산자
루아 | C# | |
---|---|---|
추가 | + | + |
뺄셈 | - | - |
배수 | * | * |
분할 | / | / |
모듈 | % | % |
익스포넌트 | ^ | ** |
변수
Luau에서는 변수를 선언할 때 유형을 지정하지 않습니다. Luau 변수에는 읽기 편의를 위해 대시를 사용하여 접두할 수 있는 "개인" 변수가 없지만, 읽기 편의를 위해 대시를 사용하여 접두할 수 있는 "비공개" 변수가 있습니다.
Luau의 변수
local stringVariable = "value"-- 공개 선언local variableName-- “개인” 선언 - 동일한 방식으로 구문 분석local _variableName
Variables in C#
string stringVariable = "value";// Public declarationpublic string variableName// Private declarationstring variableName;
범위
In Luau, 당신은 로직과 클래스 내에서 함수나 클래스보다 좁은 범위에서 변수 및 로직을 작성할 수 있습니다 do 및 end 키워드를 중첩하여 쿼리 {} 내에서 더 자세한 세부 정보를 참조하십시오. 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"endprint('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 variablevar 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 thendoSomething()end-- 여러 조건if not boolExpression thendoSomething()elseif otherBoolExpression thendoSomething()elsedoSomething()end
Conditional Statements in C#
// One conditionif (boolExpression) {doSomething();}// Multiple conditionsif (!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 dodoSomething()endrepeatdoSomething()until not boolExpression
While and Repeat Loops in C#
while (boolExpression) {doSomething();}do {doSomething();} while (boolExpression)
루프용
루아에서 루프 제네릭
-- 앞으로 루프for i = 1, 10 dodoSomething()end-- 리버스 루프for i = 10, 1, -1 dodoSomething()end
Generic For Loops in C#
// Forward loopfor (int i = 1; i <= 10; i++) {doSomething();}// Reverse loopfor (int i = 10; i >= 1; i--) {doSomething();}
Luau의 테이블 위에 있는 루프에 대해
local abcList = {"a", "b", "c"}for i, v in ipairs(abcList) doprint(v)endlocal abcDictionary = { a=1, b=2, c=3 }for k, v in pairs(abcDictionary) doprint(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
}