多行注释用
--[[ 比--[[
--]] ]]
好因为只要在第一段多打一个-,这样被注释掉的东西就可以用了。
---[[
--]]
多行注释用
--[[ 比--[[
--]] ]]
好因为只要在第一段多打一个-,这样被注释掉的东西就可以用了。
---[[
--]]
lua 数据类型
nil 空类型,表示一个无效的值
boolean true/false
number 数字类型(int+double)
string 字符串类型
function 函数
userdata 用户数据类型,表示存储在变量中的C数据类型
thread 协程(异步执行,与线程不同)
table 表类型,关联数组,通过构造表达式。可以实现类
type(变量) 返回变量的类型
lua 和 c# 编程的区别
lua轻量小巧,直接写
c#:
class A{
public static void main(string[] args){
}
}
全局变量
默认总是全局的,不需要声明
nil == null
删除变量 a = nil
标识符
规则:
不推荐下划线+大写字母(保留字格式,lua内部全局变量)
适当笔记 多写代码
print("")打印函数,输出字符串
行间不强制需要加分号
注释:
--
单行注释
--[[
--]]
多行注释
取消注释
---[[
--]]
Lua函数的声明
使用关键字function
function fact(n)
if n == 1 then
return n
else
return n*fact(n-1)
end
end
print(fact(2))
print(fact(5))
fact2 = fact
print(fact2(5))
Lua变量不建议使用_加大写字母
严格区分大小写
Root 和 root是两个不同的变量
for(int i=0,i<10,i++)
lua中的变量是可以随时变化类型的
local是局部变量关键字
使用vs code来配置开发环境,比这个scite好用
thread
userdata
当通过冒号调用的时候,系统会自动传递当前的table給self;
当通过点来调用方法的时候,self不会子哦对那个复制,我们必须通过第一个参数来传递当前的table
coroutine.status() 获取一个协同程序的运行状态,需要传入你要获取的协同程序,返回值是一个字符串
协同程序只能执行一次(执行完成之后就会处于死亡(dead)状态)
如果使用coroutine.create()创建的协同程序
第二次启动的时候不会报错,但是也不会再次执行
如果使用coroutine.wrap()创建的协同程序
第二次调用的时候会报错提示这个协同程序已经处于死亡(dead)状态
coroutine.running() 获取一个正在运行的协同程序,返回值是一个协同程序的线程号(一般只有把这个方法写到你要获取的那个协同程序里面才能获取成功)
如果一个协同程序有参数,中间有暂停,当你在暂停之后再次启动这个协同的程序的时候可以不用传参数,只需要传这个协同程序(他会使用上次启动时所传的参数执行),如果你传递参数这个参数会作为上次coroutone.yield()的参数
协同程序的返回值会返回协同程序执行的结果(true和false)
如果有其他返回值,后面的返回值才是你所返回的返回信息
如果想在协同程序暂停的时候返回信息,可以在coroutine.yield()的括号里面写上要返回的信息
co = coroutine.wrap(
function()
end
)
定义一个co协同程序
co()
启动co协同程序(这种创建协同程序的启动方法和调用普通的function一样,但是不能暂停)
co = coroutine.create(
function()
coroutine.yield()
end
)
定义一个co协同程序
coroutine.resume(co)
启动co协同程序(执行到coroutine.yield()的时候会停止运行)
coroutine.resume(co)
继续启动co协同程序(从coroutine.yield()开始继续往下执行,如果有参数继续执行的时候可以不传参数)
co = coroutune.create(
function()
end
)
定义一个协同程序co
coroutine.resume(co,协同里面function里面的参数(没有参数可以不写))
启动协同函数(不启动,不会执行)
table.sort(mytable) 把mytable表中的元素进行排序(按照ASCII值进行排序)
table.concat(mytable) 把mytable表中的所有内容拼接成一个字符串
table.concat(mytable,",") 把mytable表中的所有内容用 , 拼接成一个字符串
table.concat(mytable,",",2,4) 把mytable表中从2到4中的所有内容用 , 拼接成一个字符串
table.insert(mytable,"java") 在mytable中最后一个元素插入java
table.insert(mytable,2,"java") 在mytable中的第2个位置中插入java(并且自动把后面元素的索引值自动加1)
table.remove(mytable,2) 把mytable中的最后一个元素删除
table.remove(mytable,2) 把mytable中的第2个位置中的元素删除(并且自动把后面元素的索引值自动减1)
string.upper() 字母转换为大写
string.lower() 字母转换为小写
string.gsub(str,"s","1",2) 替换
把str中的s替换为1,替换次数为2
str 要替换的字符串
s 要换掉的内容
1 要换成的内容
2 要替换的次数
string find(str,"name",4) 查找
查找str中的name从第四个位置开始
str 要查找的字符串
name 要查找的内容
4 查找的起始位置
string.reverse() 字符串翻转
string.format() 字符串格式化
%d 代表整数数字
%s 代表字符串