1. assert(청크)()
-. 컴파일된 루아 스크립트 청크를 하나의 처리 함수처럼 실행할 수 있도록 하는 수단.
-. 청크는 하나의 명령 또는 일련의 명령들로, 크기에 제한이 없음.
-. loadstring, loadfile 함수로도 청크를 적재, 컴파일 가능 함.
-. loadstring으로도 임의의 청크를 실행할 수 있지만, 오류 메시지를 표시 하지 못 함.
-. loadfile은 dofile이 더 유용하기 때문에 거의 사용 하지 않음.
-. assert(loadstring(string))()을 이용하여 유용하게 사용 가능.
ex)
a = "hello word"
b = "print(a)"
assert(loadstring(b))()
hello world
2. dofile(파일이름)
-. 파일을 적재하고 즉시 처리.
ex)
dofile("scripts/runtime_functions.lua");
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
<< 수학 함수들>>
math.abs | math.acos | math.asin | math.atan |
math.atan2 | math.ceil | math.cos | math.deg |
math.exp | math.floor | math.log | math.log10 |
math.max | math.min | math.mod | math.pow |
math.rad | math.sin | math.sqrt | math.tan |
math.frexp | math.ldexp | math.random | math.randomseed |
* math.pi : 원주율 값을 담고 있음.
3. math.floor()
-. 주어진 수의 소수부를 버리고 정수로 변환.
-. 반올림이 필요하면 +0.5 함.
ex)
a = 5.125
b = 5.75
a = a + 0.5
b = b + 0.5
a = math.floor(a) -- a = 5
b = math.floor(b) -- b = 6
4. math.ceil()
-. 주어진 수의 소수부를 올리고 정수로 변환.
ex)
a = 5.125
b = 5.75
a = math.ceil(a) -- a = 6
b = math.ceil(b) -- b = 6
5. math.random()
-. 난수 발생 함수.
-. 인자값을 주지 않으면 0~1 사이의 의사난수를 돌려줌.
-. 인자 값으로 범위를 정함 : 범위안에 정수 난수를 돌려 줌.
ex)
myDie = math.random(1,6)
-. 더 무작위 값을 얻기위해 종자값 함수 사용.
ex)
math.randomseed(os.data("%d%H%M%S")) -- 날짜함수 유용.
6. math.max(), math.min()
-. 어떤 집합에서 가장 큰 값과 가장 작은 값을 찾아 냄.
7. tonumber()
-. 문자열을 수치로 변환.
ex)
mySting = "1234"
myNum = tonumber(mySting)
print(myNum + 2) --> 1236
8. tostring()
-. 수치를 문자열로 변환.
ex)
myNum = 1234
myString = tostring(myNum)
print(type(myString)) --> "string"
9. string.char(n1, n2, ...)
-. 주어진 수치 인수들을 ASCII 값들로 해석하고,
그 ASCII 값들에 해당한는 문자들로 하나의 문자열을 만들어서 돌려 줌.
ex)
myFile:write(string.char(10)) -- 열린 파일에서 줄 바꿈.
10. string.len(myString)
-. 문자열의 개수 반환.
ex)
myString = "1234"
print(string.len(myString)) --> 4
11. string.sub(myString, start, end)
-. 문자열 안의 한 부분을 돌려줌, start~end 사이.
ex)
myString = "hello world"
newString = string.sub(myString, 1, 5)
print(newString) --> "hello"
-. start, end는 음수 값도 가능하며, 끝을 기준으로 함.
-. end는 생략시 문자의 끝으로 간주.
12. string.format()
-. 문자열읠 포매팅하는 함수로, 여러 변수들의 값을 포함하는 문자열을 만들 때 편리 함.
ex)
myName = "Jungho"
myIQ = 80
myString = string.format("%s%s%d%s", myName, "'s IQ is ", myIQ, ".")
print(myString)
* 루아는 문자열 연결 연산자(..)를 제공
13. string.find(sourceString, findString)
-. 첫 번째 인수로 주어진 원본 문자열에서 두 번째 인수로 주어진 대상 문자열이
처음 나타난 부분의 시작과 끝 위치를 돌려 줌.
-. 없을 경우는 nil을 반환.
ex)
mySting = "My name is John Smith."
sStart, sEnd = string.find(myString, "John")
print(sStart, sEnd) --> 12 15
<< 문자열과 패턴 >>
-. 패턴이란 루아가 문자열로부터 의미 있는 결과를 걸러내도록 하는 일종의 틀이라고 할 수 있음.
-. 루아의 패턴을 만든는 데 쓰이는 요소들.
. | 모든 문자 | %s | 공백 문자 |
%a | 영문자 | %u | 영문 대문자 |
%c | 제어문자 | %w | 영수문자 |
%d | 숫자 | %x | 16진수 숫자 |
%l | 영문 소문자 | %z | 코드 값 0에 해당하는 숫자 |
%p | 문장부호 |
14. string.gsub(sourceString, pattern, replacementString)
-. 문자열에서 pattern에 부합하는 부분을 replacementString으로 주어진 문자열로 치환.
ex)
myString = "Tel : 555-3257"
newStr= string.gsub(myString, "%d", "*")
print(newStr) --> Tel : ***-****
15. string.gfind(sourceString, pattern)
-. 첫 번째 인수로 주어진 문자열에서 두 번째 인수로 주어진 패턴을 한 번에 하나씩 차례로 찾아 나감.
ex)
myString = "This is my rather long string."
print(myString)
counter = 1
for myWord in string.gfind(myString, "%a+") do
print(string.format("Word #%d : %s", counter, myWord))
counter = counter + 1
end
-. %a+는 빈칸이나 문장부호, 숫자 등이 나오기 전까지의 임의의 개수의 영문자들을 의미 함.
16. table.getn(myTable)
-. table의 요소 개수를 돌려 줌.
ex)
for index=1, table.getn(myTable) do
print(myTable[index])
end
17. table.sort(myTable [, comp])
-. table의 요소들을 크기를 비교하여 comp에 따라 정렬 함.
ex)
function Sort(theTable, direction)
if direction ~= 1 then
table.sort(theTable) -- 오름 차순 정렬
else
function Reverse(a, b) -- 반전 함수 정의
if a<b then
return false
else
return true
end
end
table.sort(theTable, Reverse) -- 반전 함수 값의 따라
end -- 정렬 : 내림차순
end
18. table.insert(myTable, position, value)
-. table에 새 요소를 추가.
-. position 인수를 생략하면 table 끝에 추가.
ex)
table.insert(myTable, 25, “hello")
19. table.remove(myTable, position)
-. table에서 특정 요소를 제거하고 그 요소를 돌려 줌.
ex)
print(table.remove(myTable, 25))
20. 기본적인 입출력
-. 파일 열기
: myFile = io.open("test_data.lua", "w") -- "a"
-. 파일 닫기
: io.close(myFile)
-. 파일에 쓰기
: myFile:write("-- Test lua file")
-. 파일로 부터 읽기
: res = myFile:read("*all") -- "*line", "*number"
[출처] Lua - 07. 표준 라이브러리|작성자 악마
'[ Programing ] > Lua Scirpt' 카테고리의 다른 글
Lua - C++ 연동 간단한 예제 (0) | 2022.03.06 |
---|---|
Lua - C++과의 연동 (0) | 2022.03.06 |
Lua - 명령문(Statements) (0) | 2022.03.06 |
Lua - 연산자(Expressions) (0) | 2022.03.06 |
Lua - 변수(Variables) (0) | 2022.03.05 |