변수
-- 변수 생성
a = 10
-- 변수 삭제
a = nil
변수 타입
: 루아는 동적 타입 지정 언어이므로 별도의 데이터 타입을 지정하는 정의가 없다.
각 값은 내부에 자신의 타입을 담고 있다.
- 문자열(string)
- 수치(number)
- 함수
- 부울형(boolean)
- 닐(nil)
닐(nil)
정상 값이 아니라는 뜻으로 사용
전역 변수를 지울 때 대입한다.
부울형(boolean)
true와 false를 가진다.
조건에선 false와 nil만 거짓으로, 나머지는 참으로 판단된다.
수치(number)
배정도 부동소수점(double-precision floating point) 수치를 뜻한다.
기본으로 실수형을 사용하며, 정수를 표현할 때 (10^14)를 넘지 않는다면 반올림 오차 없이 표현이 가능하다.
long 또는 float을 사용하도록 변경할 수 있다 (luaconf.h 파일 참조)
문자열(string)
변경 불가능한 값이며, 새로운 문자열을 만들어야 한다.
자동 메모리 관리 대상이다.
a = "one string"
b = string.gsub(a, "one", "another") --- 문자열의 일부분을 변경
print(a) --> one string
print(b) --> another string
[[ ]]를 사용하여 긴 문자열(여러 줄)을 지정할 수 있다.
page = [[
<html>
<head>
...
]]
write(page)
'[[' ']]'가 포함된 코드를 문자열에 넣고 싶은 경우, '[===['와 같이 두 각괄호 사이에 원하는 수 만큼 등호를 넣는다.
수치와 문자열 간에 자동 변환 기능을 제공한다.
print("10" + 1) --> 11
print("10 + 1") --> "10 + 1"
print("-5.3e-10" * "2") --> -1.06e-09
..(병합 연산자)가 있으며 앞에 공백이 없으면 소수점으로 판단함
print(10 .. 20) --> 1020 (병합 연산자)
#(길이 연산자)를 붙이면 문자열 길이를 알 수 있다.
print(#str) -->5
테이블(table)
가변 길이의 연관 배열을 구현한 기능이다.
a = {} -- 빈 테이블
k = "x"
a[k] = 10
a[20] = "great"
a.x = a["x"] 으로 표현 가능하고하다.
전자는 미리 정의돼있고, 고정된 키 집합을 사용할 때
후자는 키로 문자열을 사용하는 것을 알려줌
루아에서 배열은 1부터 시작하며, #(길이 연산자)를 사용해 배열의 마지막 색인을 반환한다
for i=1, #a do
print(a[i])
end
printf(a[#a]) -- a 목록의 가장 마지막 값 출력
a[#a] = nill -- 가장 마지막 값 지우기
a[#a+1] = v -- 목록 끝에 v 추가
함수(function)
변수에 저장할 수 있고, 다른 함수에 인수로 전달할 수 있고, 결과 값으로 반환도 가능하다.