반응형
블로그 이미지
개발자로서 현장에서 일하면서 새로 접하는 기술들이나 알게된 정보 등을 정리하기 위한 블로그입니다. 운 좋게 미국에서 큰 회사들의 프로젝트에서 컬설턴트로 일하고 있어서 새로운 기술들을 접할 기회가 많이 있습니다. 미국의 IT 프로젝트에서 사용되는 툴들에 대해 많은 분들과 정보를 공유하고 싶습니다.
솔웅

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

카테고리


반응형
글을 진행하다 보니까 코로나에서 제공하는 DOC 내용대로 가게 되네요.
코로나에서 제공되다보니까 기본을 탄탄히 닦을 수 있는 것 같아요.

저도 지금 앱을 개발하고는 있지만 이 글을 쓰면서 기본을 다질 수 있어서 좋구요.

아마 코로나에서 제공하는 매뉴얼 대로 글이 연재 될 것 같습니다.
가끔 제가 터득한 팁 정도 올릴 수 있을 거구요.

코로나는 lua 랭귀지를 사용하고 있습니다.
lua는 JAVA,C 같은 컴파일 언어가 아니고 PHP, ASP, Java Script 같은 스크립트 언어입니다.

변수명은 숫자로은 시작할 수 없구요. 첫글자 이외에는 사용할 수 있습니다.
숫자 이외에 문자, underscore 를 변수명에 사용 할 수 있어요.

코로나에서 미리 점유하고 있어 변수명으로 사용할 수 없는 단어들은 아래와 같습니다.
    and       break     do        else      elseif
end       false     for       function  if
     in        local     nil       not       or
     repeat    return    then      true      until     while

라인 주석은 앞에 -- 를 붙입니다.. (대쉬 2개)
범위 주석은


--[[
print( 10 )       -- no action (comment)
--]]
이렇게 합니다.
일시적으로 범위 주석을 해제하고 싶으면 아래와 같이 합니다.

---[[
print( 10 )       --> 10
--]]
루아에서 사용하는 형( TYPE) 에는 아래와 같은 것들이 있습니다.

nil
. Nil is a type with a single value, nil. By default, global variables are nil which means that they have not been assigned a value. This is analogous to null in JavaScript/ActionScript.
  • boolean. The boolean type has two values, false and true. Note that in conditional expressions, e.g. if ( condition ), both false and nil evaluate as false; everything else evaluates as true.
  • number. Represents real (double-precision floating-point) numbers.
  • string. Represents arrays of characters (any 8-bit character, including embedded zeroes)
  • function.
  • table. Tables are the fundamental data structure in Lua. They implement an associative array which is just a fancy way of saying that the array can be indexed not just by numbers, but also by any other value of the language except nil. Typically, you would use a string as an index (see Properties).
자바스크립트의 null 은 루아의 nil 과 같구요. 배열은 table이란 이름을 사용합니다.
변수 선언 할 때 따로 형을 선언하지 않구요 루아가 알아서 해 줍니다.
형변환도 루아가 알아서 해 주구요.
이런 규칙이 편하긴 하지만 프로그래밍을 하다보면 일단 스트링으로 선언된 숫자를 number 형 처럼 크기 비교 같은 거 할 때 좀 불편한 점은 있더라구요.
이건 나중에 한번 다룰 일이 있을 겁니다.

루아에서 배열로 사용하는 table 선언은 {} 로 합니다.
아래 사용 예제 입니다.
        t = {}                          -- create a table
        k = "x"
        t[k] = 3.14                     -- new table entry, with key="x" and value=3.14
        t[10] = "hi"            -- new table entry, with key=10 and value="hi"
        print( t[k] )           --> 3.14
        print( t["x"] )         --> 3.14
        print( t.x )            --> 3.14
        k=10
        print( t[k] )           --> "hi"
변수 선언은 그냥 하시면 되요.
abc  = "test"
이러면 abc 라는 변수에 test 라는 문자가 들어갑니다.
이렇게 선언하면 글로벌 변수가 되구요.

지역 변수는 앞에 local 이라는 단어를 씁니다.
x = 1                                                   -- global variable
local y = 10                                    -- local variable
관계를 나타내는 기호들은 아래와 같습니다.
==    ~=    <     >     <=    >=
그리고 logical operator 는 아래와 같구요.
     10 or 20            --> 10
     10 or error()       --> 10
     nil or "a"          --> "a"
     nil and 10          --> nil
     false and error()   --> false
     false and nil       --> false
     false or nil        --> nil
     10 and 20           --> 20
그리고 두 단어를 합하려면 .. 를 씁니다.
예를 들어
print("test = " .. x)
이렇게 하면 터미널에 test = 'x 변수의 내용' 이 찍혀 나옵니다.
오퍼레이터 우선순위는 낮은 순서부터 아래와 같이 됩니다.
     or
     and
     >     <     >=    <=    ~=    ==
     ..
     +     -
     *     /     %
     not   #     - (unary)
     ^
코로나에서 메소드(펑션) 선언은 아래와 같습니다.
function abc()
함수 내용
end
그리고 미리 지정된 함수들도 사용할 수 있구요.
math.sin(100)
미리 지정된 함수들은 다음에 소개해 드릴 겁니다.
object method 를 사용하려면 : 를 사용합니다.
자바스크립트는 그냥 . 을 사용하지요. 이 부분이 좀 다르더라구요.
JavaScript Lua
object.translate( 10, 10 ); object:translate( 10, 10 )
자바스크립트 처럼 . 을 사용해도 되는데요 그 방법은 아래와 같습니다.
Object call with dot Object call with colon
object.translate( object, 10, 10 ); object:translate( 10, 10 )
편하신 대로 사용하면 되는데.. : 가 조금 더 편하죠?
메모리 관리는 루아가 알아서 해 줍니다.
자바처럼 garbage collection 에서 처리합니다.
루아는 local 로 선언된 내용들을 처리할 겁니다.
그러니까 변수나 함수 선언은 웬만하면 local로 하시는 게 좋습니다.

global 변수나 table 에 들어있는 변수들은 Garbage로 처리 되지 않아서 계속 메모리를 점유하고 있게 됩다
그리고 팁으로 알아 두실 건
자바에서는 모든 라인 끝에 ; 를 붙입니다.
루아는 붙여도 되고 아무것도 안 붙여도 됩니다.
if 문도 자바랑 약간 다른데요.
if () then
end
이런 구조를 갖고 있습니다.
그리고 elseif 는 붙여 씁니다.
배열에서 첫번째 배열은 t[1]입니다. 자바처럼 0에서 부터 시작하지 않습니다.
루아에서는 함수 리턴 값이 2개 이상 될 수도 있습니다.
이 부분은 편리하더라구요.
그리고 이렇게 변수값 대입도 가능합니다.
x,y=y,x
이러면 x 는 y 가 되고 y 는 x 가 됩니다.
x,y,z = 0
이러면 세개 변수 값이 한꺼번에 대입 되구요.
오늘은 이렇게 루아에 대한 문법 공부를 간단히 했습니다.
그냥 한번 읽으면 '아 루아는 다른 언어와는 다르게 이런 특징이 있구나' 하는 걸 알 수 있을겁니다.
그냥 거기까지만 하면 되지 않을까요?
그럼 다음 시간에 또 뵙겠습니다.


반응형

'Corona SDK > Corona Doc' 카테고리의 다른 글

Physics Joints 예제 코드  (0) 2011.09.29
Physics Joint  (0) 2011.09.28
Physics Bodies 코딩 하기  (5) 2011.09.28
Physics Bodies  (0) 2011.09.27
Physics의 Collision Event  (0) 2011.09.27
Corona SDK Physics API  (1) 2011.09.22
정말 매력있는 코로나의 Physics Engine  (2) 2011.09.21
config.lua 파일과 build.lua 파일...  (2) 2011.09.19
폰트 및 config.lua 파일에 대하여.  (10) 2011.09.14
처음으로 코딩 해 보기  (2) 2011.09.13