旧人旧梦旧时光
lua字符串定义 和转义字符
1。定义
‘ ’ “”[[]]
2. 转义字符
\n换行 \\ \"代表 "
旧人旧梦旧时光
lua字符串定义 和转义字符
1。定义
‘ ’ “”[[]]
2. 转义字符
\n换行 \\ \"代表 "
旧人旧梦旧时光
逻辑运算符和其他运算符的使用
关系运算符 ==,~=(不等于) > ,< >= <=
逻辑运算符 and or not
#可以取得表的最大索引
旧人旧梦旧时光
lua 中的数学运算符
旧人旧梦旧时光
可变参数
即参数数量是任意多个的
function test(...)--可变参数 需要将参数设置为...
--print(arg)--arg是一个表
local arg={...}
for k,v in pairs(arg) do
res=res+v
end
end
test()
test(3,34)
test()
test(1)
test(1,215,12)
#"werwr"可计算字符串长度
旧人旧梦旧时光
function 用法特征总结
--[[
修饰符 function函数名 --修饰符即local
方法体
return--可选的 也可以不返回
--]]
function max(num1,num2)
if(num1>num2) then
return num1
else
return num2
end
end
print(max(1,10))
```````函数可以作为数据赋值 可可以作为参数传递
temp=max--把max赋值给temp
myprint=function(param)--这是个匿名函数
print("这个是我的打印函数"..param)
end
myprint(100)
function add(num1,num2,printFun)
res=num1+num2
printFun(res);
end
add(40,32,myprint)
lua里面的函数可以返回多个值
c#只能返回一个值
function temp()
return 4,15,23,1
end
res=temp()
print(res)
可变参数
旧人旧梦旧时光
lua流程控制
不同条件下执行不同代码
if(布尔表达式)
当不二表达式为true时需要执行的代码
end
else
为false的时候需要执行的代码
end
if (布尔表达式) then
--1
elseif(布尔表达式) then--elseif 不要分离开
--2
else
--3
end
if(0) then--0代表true
print(0)
end
除了false 和nil 全都代表true
if(b) then
print("b不为空")
end
旧人旧梦旧时光
循环嵌套
for i=1,10 do
for j=1,i do
print(i)
end
end--从1到10 是几输出几次
for i=1 ,10 do
j=1
while j<=i do
print(i)
j=j+1
end
end
旧人旧梦旧时光
for循环
1数值for循环
for var=start,end ,step dp
循环体
end
var会从 start变化到end 每次变化 step进行
默认 step可以不指定 为1
for i=1,10 do
print(i)
end
2泛型for循环
tab1={ key1="fsf",key2="dfsf"}
for k,v in pairs( tab1) do
print(k,v)
end --相当于foreach
tab2={"fsdfd","sdfe","fsds"}
for k,v in pairs(tab2) do
print(k,v)
end
3.repeat
循环体
until(条件)
a=1
repeat
print(a)
a=a+1
until(a>=10)--直到
旧人旧梦旧时光
循环
while
for
rereat until 相当于 do while
while( 判断条件 必须返回true 或false ) do
循环体
end
a=1
while(a<=20) do--1到20
print(a)
a=a+1
end
while (a<=20) do
if( a%2==1 ) then
end
a=a+1
end
括号推荐加上
旧人旧梦旧时光
lua中多个变量的同时赋值
a,b=10,20相当于a=10 b=20
a,b,c=11,87,"rwrt"
a=11
a,b=b,a a,b交换值--
a,b=10,20,30 当右边的值多的时候 多余的会被自动忽略掉
a=10,b=20
a,b,c=10,20 左边的变量多的时候 没有值得变量会被赋值默认的 nil
即 a=10 b=20 c =nil
函数返回多个值
function test()
return 10,20--返回了两个值
end
a=test()--由于只有一个a 接收 所以 会接收到10,20会被忽略掉
print(a)
结果是 10
旧人旧梦旧时光
全局变量 局部变量
lua中类型可以更改
默认是 创建全局变量
使用local创建局部变量
所在语句块结束后销毁局部变量
在lua文件中创建的局部变量 在文件执行完毕之后被释放
在函数中定义的变量 必须要调用函数才能显示变量的值 否则为nil
do
end就是一个代码块
do
local a=10
print(a,b)
b=11
一般来说 局部变量比全局变量的速度快
建议尽量使用局部变量
旧人旧梦旧时光
协程
在lua里thread表示的是协程
旧人旧梦旧时光
lua 方法可以返回任何 类型 参数也可以为任何类型
function fact(n)
if n==1 then
return n ;
else
return n*fact(n-1);
end
end
调用
print(fact(5));
赋值
fact2=fact
相当于把fact方法赋值给 fact2
旧人旧梦旧时光
table不会固定大小 可以动态 添加
修改表中数据d 直接覆盖就好
lua中 索引并不会自动向前移
注意 在表中的删除 会造成索引的不连续
删除整个表 tab=nil
释放内存
旧人旧梦旧时光
table
{ }构造表达式
table={ }
tab2=(key1=100,key2="dsfwe" )--初始化一个表
访问表 中的值
print(tab.key1)
print["key1"]
tab3={"rewr","rewr","sfdawr2","waerw"}
访问表中的值 print{tab3[2]}
索引从1开始
for key ,val in pairs(tab3) do
//循环体
print(key..":"..val)
end
string 双引单引都可以
string
str1=“傻瓜”
str2="dfwiwe"
分号可加可不加
一行有多个的话则需要加括号
html=-[[
efdsaggdeg
fdgrg
dfe
]]
一块儿字符串
+ 做运算用的
..连接字符串
#计算字符串的长度
ptint(#str2)
#计算字节
科学记数法
e相当于10
一个中文字符占两个字节
if true then
print(true)
end
if nil then
print("nil被当作true处理")
else
print("nil被当作false处理")
end
lua中+只能是运算作用不可以使用字符串连接。
..才是lua中字符串连接
- -[[]] 是注释