##################################################################
### basic IO
##################################################################
print()
io.read()
##################################################################
### comment
##################################################################
-- one line
--[[ ]]-- multiple lines
##################################################################
### variable
##################################################################
scope: local for local variable (local a=20), otherwise, global
##################################################################
### types
##################################################################
nil, boolean (true false), number, string, function, table.
type(a): function to check type of a
##################################################################
### operators
##################################################################
+ - * / % ^
boolean operator: == ~= > < >= <=
string concatenate: ..
table size count: #
##################################################################
### repeating
##################################################################
while (a<20) do
a = a + 1
end
for i = 10,20,3 do
print(i)
end
repeat
a = a + 1
until (a<20)
ipairs / pairs (for table)
##################################################################
### condition
##################################################################
if a>b then
print(a)
else
print(b)
end
if nesting -> else if ... end
### function
{local} function fname(a,b)
print (a+b)
return a+b
end
fname = function(a,b)
print(a,b)
end
##################################################################
### function name can be a parameter of another function to be used
##################################################################
myprint = function(param)
print(param)
end
function add(a,b,fn)
ret = a+b
fn(ret)
end
myprint(10)
add(2,5,myprint)
### variable arguments
function average(...)
sum = 0
local arg = {...}
for i,v in ipairs(arg) do
sum = sum + v
end
return sum / #arg
end
##################################################################
### string
##################################################################
string.upper()
string.format()
.. concatenation
string.rep(s, 10)
string.format('%03d %.1f', 4, 15.42)
##################################################################
### array: index starts from 1, use table as an array, # size of array
##################################################################
##################################################################
### multi dimension array
##################################################################
mat = {}
for iy = 1,5 do
mat[iy] = {} -- important!! need to make one empty row first
for ix = 1,3 do
mat[iy][ix] = ix*iy
end
end
for iy=1,5 do
for ix=1,3 do
print(ix,iy,mat[iy][ix])
end
end
##################################################################
### table: table can mix different type data
##################################################################
> a = {'jl', age=40, birthdate='07231987' }
> a[1]
jl
> a[2]
nil
> a[age]
nil
> a['age']
40
> a['birthdate']
07231987
> #a
1
> b = {1,2,3,4}
> #b
4
> for key,value in pairs(a) do
>> print(key, value)
>> end
1 jl
age 40
birthdate 07231987
> for idx,value in ipairs(a) do -- only show number index available items !!!
>> print(idx,value)
>> end
1 jl
##################################################################
### Module
##################################################################
mymath.lua
local mymath = {}
function mymath.round(a)
return math.floor(a+0.5)
end
return mymath
~~~~~~~~
test.lua
mm = require("mymath")
print(mm.round(1.2))
print(mm.round(1.6))
그 밖의 내용들은 이곳에서 더 살펴보면 좋을듯
https://www.tutorialspoint.com/lua/index.htm
'Coding > Misc' 카테고리의 다른 글
Postscript 좌표계 (0) | 2023.11.18 |
---|---|
랩탑 배터리 수명 체크 (0) | 2023.01.05 |
Poisson Disc Sampling - 2차원 패턴 랜더마이징 알고리즘 (0) | 2022.11.10 |
리사주 스피로그래프 (0) | 2022.07.04 |
matlab, golang, html examples (0) | 2021.07.09 |