수식은 값을 뜻한다. 상수와 문자열, 변수, 연산자(단항,이항), 함수호출을 루아에서는
수식으로 간주한다. 

1. 산술 연산자 
+, -, *, /, ^(거듭제곱), %(나머지)
x = math.piprint(x - x%0.01)   --> 3.14
C언어 배울때도 언듯 배웠던거 같다 
하지만 C언어에선 %d옵션으로 얼마든지 줄일수 있다


2. 관계 연산자
<, >, <=, >=, ==, ~=

'~=' 이 연산자는 C언어에서 != 이것과 같은 다른다(같지 않다)를 나타내는 연산자


3. 논리 연산자
and, or, not
오묘하다..
C언어와 비교해보면
and : c언어 &&
or : c언어 ||
not : c언어 !
print(4 and 5)   --> 5
print(nil and 13) --> nil
print(false and 13) --> false
print(4 or 5) --> 4
print(false or 5) --> 5
max min 예)
max = (x>y) and x or y
min = (x<y) and x or y

4. 문자열 병합 연산자
이것도 역시 오묘하다..
루아의 문자열 병합 연산자를 ..으로 표시한다.
연산자 인자중 어느 하나라도 수치를 지정하면 루아는 이 수치를 문자열로 변환한다. 
예)
print("Hello " .. "World)   --> Hello World
print(0 .. 1) --> 01

5. 연산자 우선순위
^
not     #
*        /     %
+        -
..
<       >     <=     >=     ~=     ==
and
or 

애매할땐 괄호를 활용!
예)
a+i < b/2+1    --> (a+i) < ((b/2)+1)
5+x^2*8 --> 5+((x^2)*8)
a<y and y <= z --> (a<y) and (y <= z)
-x^2 --> -(x^2)
x^y^z --> x^(y^z) 


6. 테이블 생성자
생성자는 테이블을 생성하고 초기화하는 수식으로,
루아에서  단연 돋보이는 특징이며, 가장 유용하고
융통성 있는 기능 중 하나다 
예)
days = {"Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday"}
print(days[1]) -->  Sunday
print(days[2]) -->  Monday
print(days[3]) -->  Tuesday
print(days[4]) -->  Wednesday 
print(days[5]) -->  Thursday
print(days[6]) -->  Friday
print(days[7]) -->  Saturday 
테이블의 시작은 0이 아닌 1이다 꼭 기억하자
list = nil
for line in io.lines() do
   list = {next=list, value=line}
end
위 코드는 간단한 Linked List소스다
문자열을 읽어서 리스트에안에 역순으로 저장한다

days = {[0] = "Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday"}
배열 인덱스를 0부터 시작하게 초기화 하는 코드다
보면 c++의 enum의 첫값을 정해주는 것과 비슷하다

 
신고

'Programming > Lua' 카테고리의 다른 글

[Lua] 1부(언어) 5장. 함수 개요  (3) 2011.07.25
[Lua] 1부(언어) 4장. 문장  (0) 2011.07.21
[Lua] 1부(언어) 3장. 수식  (0) 2011.07.17
[Lua] 1부(언어) 2장. 루아 타입과 값  (0) 2011.07.16
[Lua] 1부(언어) 1장. 시작하기  (0) 2011.07.16
by Ergate 2011.07.17 18:43
| 1 2 3 4 5 |

티스토리 툴바