1.输出
print("")
2.注释
– 单行注释
–[[ --]]多行注释
3.标识符
不以数字开头 最好不使用下划线加大写字母的标识符
4.计算
字符串连接使用的是 …
数字字符串可以直接相加 +
5.字符串
字符串由一对双引号或单引号来表示。
也可以用 2 个方括号 “[[]]” 来表示"一块"字符串
6.条件判断
and 如果第一个为false 返回第一个操作 否则返回第二个操作数
or 如果第一个操作数不为false 则返回第一个操作数否则返回第二个操作数
not 永远返回boolean类型值 取反
7.关系运算 ~= 不等于
8.函数类型转换 tonumber(“100101”,2) 字符串转2进制
–假如字符串变量未 strTmp
9.字符串长度 string.len(strTmp)或#strTmp / 字符串翻转string.reverse(strTmp)
/转大写 string.upper / 转小写 string.lower / 字符串提取 string.sub(s,i,j)从字符串s中提取第i个到第j个字符 / 整数转换成字符 i = 97 string.char(i, i+1, i+2)
/字符串内转换成整数 string.byte(“abc”, -1) (99) string.byte(“abcde”,2,3 ) 98 99/
格式化输出字符串 a = string.format(“x=%d”,20) (a值为 “x=20”) /
返回整形位置 a,b = string.find(“zhangyi”, “an”) (a值为 3,b值为4)
10.table表
空构造器 表a = {} 表像map一样但是可以直接使用不同key值进行赋值 a[1] = 1 a[“zhangyi”] = 1993 但是lua不叫key值叫做索引 还有另外一种写法 a[“zhangyi”]等价a.zhangyi 但是a.zhangyi则表示a表是固定的当做结构体使用的另外一些表构造器 a = {“a”, “b”, “c”} / a = {x=1, y=2} 等价 a={} a.x=1 a.y=20
循环列表(都是整形key值且没有nil)才是顺序输出 for i, j in pairs(a) do print(i,j) end
11.表标准库
table.insert(a, 2, “2”);往第二个索引插入string 2
table.remove(a, 2);删除第二个索引为2的值
12.函数
1.函数传参可以自由传参,参数不足会自动补足nil,多余会自动舍弃
2.多返回值 在return后列出要返回的值即可 return a,b 当函数的参数是函数返回值时,所有返回值都会作为实参传给第二个参数 如果作为参数的函数加了括号则强制返回一个参数
3.可变长参数 函数参数用…表示(如function fun(…))1).使用表达式{…}将参数放入一个表中 2).如果可变参数中含有nil,可以使用table.pack()来返回一个表,该表会额外多一个key值保存表里面有多少个数 比如a{1,2,nil} b = table.pack(a) 则b.n == 3; 3)select方法便利可变参数表 a = {“1”,“2”,“3”} ;select(1,a)返回参数类型一致 1,2,3 当参数1变成"#“时返回表里面所有个数 select(#,a)
4.函数table.unpack() 与table.pack()返回一个表相反,返回的是一组表内所有的值a , b, c = table.unpack{10,nil,20,30} 结果等于 10 nil 20 最后一个30则被丢弃
5.正确的尾调用 尾调用相当于goto 实现是函数的最后一个动作return调用另一个函数而没有再进行其他的工作时 function foo (n)
if n > 0 then return foo(n - 1) end end
13.补充知识
1.控制结构 if then else if判断条件满足执行then 不满足执行else部分
2.while do 满足条件则执行do后面的语句
3.repeat-until repeat后接执行的表达式 until后条件为true时推出循环
4.数值型for i= exp1,exp2,exp3 do 从exp1变化到exp2每次都会执行do后面语句 并且按照exp3变化 exp3默认为1
5.泛型for i, j in pairs(a) do i表示table表a的key值 j表示表a的value
6.测试时直接打印输出表 利用表库a = {55,66,88} print(table.concat(a,”,",2,3))
14.一些函数
1.计算一个数的平方根及立方根
x = x^(1/2) ;
x = x^(1/3);