lua如何打印行号_Lua常用代码

dolocal a1 = 10local a2 = 10end          -->a1和a2的作用域到此结束

if op == "+" thenr = a + belseif op == "-" thenr = a - belseif op == "*" thenr = a * belseif op == "/" thenr = a / bend

while a > 0 doa = a - 1-- Do something elseend

repeatstatements;until conditions;

function foo(a, b, c)local sum = a + breturn sum, c --函数可以返回多个值end

函数可以返回多个值:return a, b, c, ...

注释,单行用(--)来表示;多行用(--[[ ... ]])来标示;

~=(不等于)

print(("1" == 1)) --false

逻辑运算符:and、or、not;逻辑运算符认为false和nil是假(false),其他为真,0也是true.

,a ? b : c  ==>>在Lua中可以这样实现: (a and b) or c

print(not nil) --> true

Userdata 嗯,这个类型专门用来和Lua的宿主打交道的。宿主通常是用C和C++来编写的,在这种情况下,Userdata可以是宿主的任意数据类型,常用的有Struct和指针。

在Lua中,字符串的第一个字符的索引是1,但是,索引也可以是负数,表示从字符串的尾部开始计数,

string.len(s)          返回字符串s的长度;string.rep(s, n)      返回重复n次字符串s的串;你使用string.rep("a", 2^20)可以创建一个1M bytes的字符串(比如,为了测试需要);string.lower(s)       将s中的大写字母转换成小写(string.upper将小写转换成大写)。如果你想不关心大小写对一个数组进行排序的话,你可以这样:table.sort(a, function (a, b)returnstring.lower(a) "A??O"string.sub(s,i,j)函数截取字符串s的从第i个字符到第j个字符之间的串。Lua中,字符串的第一个字符索引从1开始。你也可以使用负索引,负索引从字符串的结尾向前计数:-1指向最后一个字符,-2指向倒数第二个,以此类推。所以,string.sub(s, 1, j)返回字符串s的长度为j的前缀;string.sub(s, j, -1)返回从第j个字符开始的后缀。如果不提供第3个参数,默认为-1,因此我们将最后一个调用写为string.sub(s, j);string.sub(s, 2, -2)返回去除第一个和最后一个字符后的子串。s = "[in brackets]"print(string.sub(s, 2, -2)) --> in brackets

print(string.char(97)) --> ai = 99; print(string.char(i, i+1, i+2)) --> cdeprint(string.byte("abc")) --> 97print(string.byte("abc", 2)) --> 98print(string.byte("abc", -1)) --> 99

print(string.format("pi = %.4f", PI))--> pi = 3.1416d = 5; m = 11; y = 1990print(string.format("%02d/%02d/%04d", d, m, y))--> 05/11/1990tag, title = "h1", "a title"print(string.format("%s%s>", tag, title, tag))-->

a title

string.find (s, pattern [, init [, plain]])

gsub(string,pattern,replacement[, limitCount]) - 全局替换

loadstring("Lua code") - 分析字符串中的lua代码块并且将结果作为一个函数返回

strbyte(string[, index]) - 转换字符串为整数值(可以指定某个字符).

strchar(asciiCode[, ...]) - 转换整数为相对应的字符

strfind(string, pattern[, initpos[, plain]]) - 在一个指定的目标字符串中搜索指定的内容(第三个参数为索引),返回其具体位置.

strlen(string) - 返回当前字符串的字符数

strmatch(string, pattern[, initpos]) - 与strfind不同的是,macth返回的是具体值,而find返回的是此值的位置

下面的字符串函数是wow独有的

strtrim(string) - 去除字符串前后空格

strsplit(delimiter, string) - 分割字符串

strjoin(delimiter, string, string[, ...]) - 根据定界符将字符串连接起来

\a 响铃   \v 垂直制表符    \b 退格    \\ 反斜杠\f 换页符   \" 双引号     \n 换行符    \' 单引号\r 换行符   \[ 左方括号    \t 制表符    \] 右方括号

..在Lua中是字符串连接符。当在一个数字后面写..时,必须加上空格,否则出错。

print(0 .. 1) --> 01

bit.bnot(a) - 返回一个a的补充

bit.band(w1,...) - 返回w的位与

bit.bor(w1,...) - 返回w的位或

bit.bxor(w1,...) - 返回w的位异或

bit.lshift(a,b) - 返回a向左偏移到b位

bit.rshift(a,b) - 返回a逻辑右偏移到b位

bit.arshift(a,b) - 返回a算术偏移到b位

bit.mod(a,b) - 返回a除以b的整数余数

6.1 table 中的每项要求是 key = value 的形式。 省略key时,会自动以1开始编号,并跳过设置过的key。6.2 key 只能是字符串, 这里的 web, QQ, a, b 都是字符串,但是不能加上引号, 否则出错。6.3 通过 key 来访问 table 的值,这时候,必须加上引号。

--分割字符串的函数,类似PHP中的explode函数,使用特定的分隔符分割后返回”数组(lua中的 table)“

function Split(szFullString,szSeparator)

local nFindStartIndex=1

local nSplitIndex=1

local nSplitArray= {}

whiletrue do

local nFindLastIndex=string.find(szFullString,szSeparator,nFindStartIndex)

if notnFindLastIndex then

nSplitArray[nSplitIndex] =string.sub(szFullString,nFindStartIndex,string.len(szFullString))

break

end

nSplitArray[nSplitIndex] =string.sub(szFullString,nFindStartIndex,nFindLastIndex-1)

nFindStartIndex=nFindLastIndex+string.len(szSeparator)

nSplitIndex=nSplitIndex+1

end

returnnSplitArray

end

--类似PHP中的Trim函数,用来去掉字符串两端多余的空白符(white Space)

function trim(s)

return(string.gsub(s, "^%s*(.-)%s*$", "%1"))

end

--延时函数,有点猥琐的实现,利用系统的ping的延时

functionsleep(n)

ifn>0 then os.execute("ping -n " ..tonumber(n+1) .. " localhost > NUL")end

end

pcall (f, arg1, ···)功能:在保护模式下调用函数(即发生的错误将不会反射给调用者)当调用函数成功能返回true,失败时将返回false加错误信息

22、tonumber (e [, base])功能:尝试将参数e转换为数字,当不能转换时返回nil。base(2~36)指出参数e当前使用的进制,默认为10进制,如tonumber(11,2)=3

23、tostirng(e)  功能:将参数e转换为字符串,此函数将会触发元表的__tostring事件

24、type(v)  功能:返回参数的类型名("nil","number", "string", "boolean", "table", "function", "thread", "userdata")

25、unpack (list [, i [, j]])  功能:返回指定表的索引的值,i为起始索引,j为结束索引。注:本函数只能用于以数字索引访问的表,否则只会返回nil 如:t={"1","cash"}

3、dofile (filename)  功能:打开并且执行一个lua块,当忽略参数filename时,将执行标准输入设备(stdin)的内容。返回所有块的

返回值。当发生错误时,dofile将错误反射给调用者。注:dofile不能在保护模式下运行。

4、error (message [, level])  功能:终止正在执行的函数,并返回message的内容作为错误信息(error函数永远都不会返回)  通常情况下,error会附加一些错误位置的信息到message头部.  Level参数指示获得错误的位置,  Level=1[默认]:为调用error位置(文件+行号)  Level=2:指出哪个调用error的函数的函数  Level=0:不添加错误位置信息

5、_G全局环境表(全局变量)  功能:记录全局环境的变量值的表 _G._G = _G

math.randomseed(os.time())

print(math.random()) -- 输出一个大于等于0,小于1的值print(math.random(2)) -- 输出不是1就是2print(math.random(3, 4)) -- 输出不是3就是4

local tb = {10, 20, 30}table.insert(tb, 40) -- 在table的最后插入,结果为:{10, 20, 30, 40}table.insert(tb, 2, 15) -- 在table的位置2插入,结果为:{10, 15, 20, 30, 40}

print(table.remove(tb)) -- 删除最后一个元素

-- 默认是升序排序table.sort(tb)for _, v in ipairs(tb) doprint(v)endprint("=======")-- 修改为降序排序table.sort(tb, function (a, b) if a > b then return true end end)for _, v in ipairs(tb) doprint(v)end

时间:

print(os.time()) -- 输出当前时间的描述

time(table) - 返回从一个unix时间值

print(os.time({year=2014,month=8,day=14}))

函数date是time的一个反函数,它可以将一个表示日期和时间的数字转换成某些高级的表现形式。其第一个参数是格式字符串,指定了期望的表示形式;第二个参数是日期和时间的数字,默认为当前日期和时间

local tbCurrentTime = os.date("*t")

date(format, time) - 返回当前用户机器上的时间.

你可能感兴趣的:(lua如何打印行号)