루아에서도 다른 언어와 마찬가지로 조건문과 반복문이 존재합니다. 단, 루아에서 switch문은 없으며, continue 또한 존재하지 않습니다. 1. 조건문 (if , elseif , else) 루아에서 if문의 경우 꼭 조건식 끝에 then을 붙혀줘야 합니다. 또한 elseif의 경우에는 붙.혀.서 써야 합니다.. 2. 반복 문 (while 문과 repeat) while 문의 경우 조건식 끝에 do 를 붙혀줘야 합니다. 역시 마지막에는 end를 꼭 붙혀줘야 합니다. repeat 문의 경우 do , then 을 붙혀주지 않아도 되며, repeat -> 반복문 -> until(조건)식으로 작성하면, 됩니다. 3. 반복문 (for문) for문은 조건식 끝에 do를 붙혀주고 마지막에는 end를 붙혀줘야 합니다..
프로그래밍
루아에서는 조금 특이한 연산자를 지원합니다. 기본적인 연산자는 다른 언어와 거의 동일하며 여기서는 몇가지 특이한것만 기술합니다. 1. 대입 연산자 (=) 기본적으로 number = 10;일 경우 10의 값이 입력 됩니다. 변수에 복수 대입도 가능합니다. numberA , numberB = 20 , 30; 2. 비교 연산자 기본적인 비교 연산은 == , != , ~= 와 같고 AND 와 OR의 경우에 C / C++의 경우 && , || 이지만 루아는 and 와 or로 사용이 가능합니다. 3. 기타 연산자 c++의 string 의 경우 + 연산자로 서로 합치는게 가능했는데요. 루아에서 문자열 조합의 경우 .. 로 가능합니다. 딱히 연산자에는 특이한 부분이 없네요..
루아에는 특별한 자료형이 없습니다. #LUA str = "문자열 입니다."; number = 100; boolValue = false; print(str); print(number); print(boolValue); #C++ string str = "문자열 입니다."; int number = 100; bool value = false; cout
전에 다니던 회사에서 스크립트를 사용하였는데, 사용한 언어가 lua였습니다. 그때 느꼈던 루아[Lua]의 장점으로는 컴파일을 하지 않고 바로 수정 , 수정 후 즉시 반영 , 밸런스 등의 패치시에 따로 클라이언트가 나가지 않아도 되고, 기획자가 별도의 프로잭트 코드를 수정하지 않고 따로 스크립트를 작성 및 수정으로 기획자의 의도를 즉시 반영하는등의 매력적인 언어였습니다. 지금에서 생각해보면 당시에는 QA 업무를 보며, 수정되거나 추가된 루아[Lua] 스크립트의 조건이나 예외처리등을 테스트하였는데, 이런 저런것들을 따져봐도, 언젠가 프로그래밍을 하거나 게임을 만들면 반복적이거나 잦은 유지 보수가 필요할 경우 꼭! Lua를 사용하자! 라는 생각이 있었고, 마침 시간이 되어 해당하는 기능들을 살펴보겠습니다. *..
먼저, 일반적인 코드를 보겠습니다. AA라는 클래스를 동적할당하고 사용후에 해제를 해줍니다. 프로그래머가 동적으로 생성한 객체를 별도로 해제해주어야 하는데 C++ 에서는 new와 delete를 사용해서 일일이 입력해주어야 합니다. 물론 꼼꼼한 프로그래머라면 당연히 해제도 신경써야하지만, 만약에 신경을 쓰지 못하거나 애매한 상황이 와버리면 어떨까요? 아주 극단적인 코드를 작성해 보겠습니다. 비멤버함수인 Func에서 0~9까지의 난수를 생성해서 동적할당으로 생성된 test라는 클래스를 생성하고 그 값을 리턴하고 있습니다. 그럼 여기서 Func가 호출될때마다 생성되는 AA라는 객체를 어디서 해제해 줘야 할까요? return 이전에 넣자니 값을 돌려주기전에 객체가 메모리에서 제거된 후에 쓰레기값을 리턴하게 되고..
* 생성자 - 객체가 생성될때 호출되는 함수입니다.* 소멸자 - 객체가 소멸될때 호출되는 함수입니다. 동적할당의 경우 delete에서 소멸자가 호출되고, 일반적인 객체 생성에서는 자동으로 소멸자가 호출됩니다. 자 아래와 같은 객체가 있다고 했을때 생성자와 소멸자가 없는데도 불구하고 객체는 생성, 대입 , 복사가 됩니다. 그 이유는 컴파일러가 디폴트 생성자와 디폴트 소멸자를 자동으로 생성하기 때문입니다.즉 프로그래머가 만들지 않은 생성자와 호출자와 연산자를 컴파일러가 만들어주게 되는것 입니다. [ 3번째 코드는 위 코드와 결국 같다.] 어떻게 생각해보면 참 편리한것 같습니다만...대표적으로 디폴트 복사 생성자에는 문제가 발생됩니다. 그 이유는 아래에서 확인할 수 있는데요. [ 생성자는 순차적이나 소멸자는 ..
그 동안 STL을 공부한다고 하지만 기본이 탄탄하지 못해 그냥 져냥 사용법만 간단히 사용하는 수준이었습니다.이제부터 하루에 조금씩이라도 기초부터 다시 공부를 해 나가야겠습니다. 먼저 STL에 필요한 주요 연산자 오버로딩부터 공부하겠습니다. 연산자 오버로딩이란 함수의 오버로딩과 같이 연산자도 하나의 함수라는 개념을 사용하여, 중복 정의할 수 있도록 하는 것입니다. 즉, 기본적으로 C에서 제공하는 +,-,*,=,++ 등의 연산자의 의미를 다시 부여하는 것을 말합니다. 먼저 오버로딩에 사용되는 operator 키워드 부터 알아보겠습니다. 순서대로 반환형과 Operator 키워드 , 연산자, 매개 변수 순으로 작성합니다.예시에서는 하나의 정수 제곱을 연산자 오버로딩 하였습니다. [결과] 도중에 임시 객체를 사용..
순수 가상 상속 순수 가상 함수란 반드시 재정의가 필요한 함수를 말합니다.기초 클래스에서 해당 함수의 구현의 의미가 없을 경우 사용하게 되며 기존 가상함수와는 다르게 정의가 없는 것이 특징입니다. 먼저 코드를 보겠습니다. Pet 클래스를 보면 생소한 부분이 있습니다.가상 함수 뒤에 = 0을 적어 놓은것인데요. 이 부분이 순수 가상 함수를 선언하는 부분입니다. 굳이 이렇게 사용하는 이유를 생각해보자면, 개는 멍멍 짖는다고 하고 고양이는 냐옹이라고 울때 기초 클래스인 동물 클래스는 뭐라고 울어야 할까요? 딱히 울 이유가 없습니다. 또한 내용을 정의하지 않아도 동물마다 울때의 소리가 다르기 때문에 모든 동물은 다시 해당 함수를 재정의 해야합니다. 이럴때 함수의 인터페이스만을 계승하려는 목적으로 사용하도록 순수..