Coding/Misc

Lua 기초

smores 2022. 12. 12. 01:51

##################################################################
### 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

 

Lua Tutorial

Lua Tutorial Lua is an open source language built on top of C programming language. Lua has its value across multiple platforms ranging from large server systems to small mobile applications. This tutorial covers various topics ranging from the basics of L

www.tutorialspoint.com

 

'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