Show Menu
Cheatography

Lua API Cheat Sheet (DRAFT) by

Lua standard library

This is a draft cheat sheet. It is a work in progress and is not finished yet.

Built-in

assert (v [, message])
getmet­atable (object) -> table
ipairs (t) -> func, t, 0
load (chunk [, chunkname [, mode [, env]]]) -> func | nil, err_msg
loadfile ([filename [, mode [, env]]]) -> func | nil, err_msg
next (table [, index]) -> value, next_i
pairs (t) -> v1, v2, v3 | next, t, nil
rawget (table, index) -> val
rawset (table, index, value)
select (index, ···) -> [i...]
setmet­atable (table, metatable) -> table
type (v) -> t_str
pcall (f [, arg1, ···]) -> true, val | false
xpcall (f, msgh [, arg1, ···]) -> true, val | false

table

table.c­oncat (list [, sep [, i [, j]]]) -> str
table.i­nsert (list, [pos,] value)
table.move (a1, f, e, t [,a2])
table.r­emove (list [, pos])
table.u­npack (list [, i [, j]]) -> ...
table.pack (···) -> table
table.sort (list [, comp])

corutine

corout­ine.create (closu­re_­gen­_func) -> thread
corout­ine.wrap (func) -> thread
corout­ine.resume (co [, val1, ···]) -> true, val1, ... | false, err
corout­ine.yield (···)
corout­ine.is­yie­ldable () -> bool
corout­ine.ru­nning () -> bool
corout­ine.status (co) -> "­run­nin­g" | "­sus­pen­ded­" | "­nor­mal­" | "­dea­d"

os

os.clock () -> timeval
os.time ([table]) -> timeval
os.date ([format [, time]]) -> time_str
os.set­locale (locale [, category]) -> name | nil
os.dif­ftime (t2, t1) -> t2-t1
os.execute ([comm­and]) -> true, "­exi­t" | nil, "­sig­nal­", signo
os.exit ([code [, close]])
os.getenv (varname) -> env_arg | nil
os.remove (filename) -> true | nil, err, err_code
os.rename (oldname, newname) -> true | nil, err, err_code
 os.tmpname () -> temp_name 

Command Line

lua -e <st­ate­men­ts>
arg is a table contain command line arguments
 

string

string.match (s, pattern [, init]) -> cap1, cap2, ... | nil
string.gmatch (s, pattern) -> match_­ite­r_func | nil
string.sub (s, i [, j]) -> sub_str
string.gsub (s, pattern, repl [, n]) -> sub_str
string.find (s, pattern [, init [, plain]]) -> start, end | nil
string.byte (s [, i [, j]]) -> byte1, ...
string.char (···) -> str
string.dump (function [, strip]) -> func_str
string.pack (fmt, v1, v2, ···) -> bin_str
string.pa­cksize (fmt) -> str_len
string.rep (s, n [, sep]) -> n_s
string.re­verse (s) -> r_s
string.lower (s) -> l_s
string.upper (s) -> u_s
string.format (forma­tst­ring, ···) -> f_str
gmatch: match_­ite­r_f­unc() -> cap1, cap2, ...
gsub: repl
table: use capture as key, retrive
function: use captures as parameters
str_pa­ttern: use %n as captures, %0 is whole

io

io.open (filename [, mode]) -> File
io.close ([file])
io.flush ()
io.input ([file]) -> in_File
io.output ([file]) -> out_File
io.lines ([filename ···]) -> iter_l­ine­_func
io.popen (prog [, mode]) -> File
io.read (···)
io.write (···)
io.tmpfile () -> tmp_File
io.type (File) -> "­fil­e" | "­clo­se_­fil­e" | nil
file:close ()
file:flush ()
file:lines (···) -> iter_l­ine­_func
file:read (···)
file:seek ([whence [, offset]])
file:s­etvbuf (mode [, size])
file:write (···) -> file | nil, err

math

math.abs (x)
math.acos (x)
math.asin (x)
math.atan (y [, x])
math.ceil (x)
math.cos (x)
math.deg (x)
math.exp (x)
math.floor (x)
math.fmod (x, y) -> (integ­er/­float)
math.log (x [, base])
math.max (x, ···)
math.min (x, ···)
math.modf (x) -> int_part, frac_part
math.rad (x)
math.r­andom ([m [, n]])
math.r­and­omseed (x)
math.sin (x)
math.sqrt (x)
math.tan (x)
math.t­oin­teger (x)
math.type (x) -> "­int­ege­r" | "­flo­at" | nil
math.ult (m, n) -- unsigned less
 math.huge 
 math.m­axi­nteger 
 math.m­ini­nteger 
 math.pi 
 

字符类

x: (这里 x 不能是 魔法字符 ^$()%.[­]*+-? 中的一员) 表示字符 x 自身。
.: (一个点)可­表示任何字符。
%a: 表示任何字母。
%c: 表示任何控制字符。
%d: 表示任何数字。
%g: 表示任何除空­白符外­的可打印字符。
%l: 表示所有小写字母。
%p: 表示所有标点符号。
%s: 表示所有空白字符。
%u: 表示所有大写字母。
%w: 表示所有字母及数字。
%x: 表示所有 16 进制数字符号。
%x: (这里的 x 是任意非字母­或数字的字符) 表示字符 x。
[set]: 表示 set 中所­有字符的联合。 可以以 '-' 连接,升序书­写范围­两端的­字符来­表示一­个范围­的字符集。
[^set]: 表示 set 的补集。

模式条目

单个字符类匹­配该类­别中任­意单个字符;
单个字符类跟一个 '*', 将匹配零或多­个该类的字符。 这个条目总是­匹配尽­可能长的串;
单个字符类跟一个 '+', 将匹配一或更­多个该­类的字符。 这个条目总是­匹配尽­可能长的串;
单个字符类跟一个 '-', 将匹配零或更­多个该­类的字符。 和 '*' 不同, 这个条目总是­匹配尽­可能短的串;
单个字符类跟一个 '?', 将匹配零或一­个该类的字符。 只要有可能,­它会匹配一个;
%n, 这里的 n 可以从 1 到 9; 这个条目匹配一个等于 n 号捕获物(后­面有描­述)的子串。
%bxy, 这里的 x 和 y 是两个明确的字符; 这个条目匹配以 x 开始 y 结束
%f[set], 指 边境模式; 这个条目会匹­配到一个位于 set 内某个字符之­前的一个空串, 且这个位置的­前一个­字符不属于 set 。

模式与捕获

 
模式:指一个­模式条­目的序列。如果 '^' 和 '$' 出现在其它位­置,它­们均没­有特殊­含义,­只表示自身。
捕获:模式可­以在内­部用小­括号括­起一个子模式; 这些子模式被称为 捕获物。

debug

debug.d­ebug ()
debug.g­ethook ([thread]) -> hk_func, hk_mask, hk_cnt
debug.g­etinfo ([thread,] f [, what])
debug.g­et­local ([thread,] f, local) -> name, val
debug.g­et­met­atable (value) -> mt
debug.g­et­reg­istry () -> regist­ry_­table
debug.g­et­upvalue (f, up) -> up_name, up_val
debug.g­et­use­rvalue (u) -> usr_val | nil
debug.s­ethook ([thread,] hook, mask [, count])
debug.s­et­local ([thread,] level, local, value) -> local_name | nil
debug.s­et­met­atable (value, table)
debug.s­et­upvalue (f, up, value) -> up_name | nil
debug.s­et­use­rvalue (udata, value) -> udata
debug.t­ra­ceback ([thread,] [message [, level]])
debug.u­pv­alueid (f, n)
debug.u­pv­alu­ejoin (f1, n1, f2, n2)