在线调试工具
菜鸟教程
语言
编译语言
脚本语言
Lua
- lua是一种轻量小巧的语言,用标准的C语言编写并以源码形式开放
- 设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和制定功能
Lua特点
- 轻量级:标准C语言编写并开放源码,编译后仅一百余K
- 扩展性,Lua提供了易于使用扩展的接口和机制,由宿主语言(通常是C或者C++)提供一部分功能,Lua可以使用他们,就行是本来就是内置功能一样
- 使用领域
- 游戏行业
- web领域(Nginx)服务器
- 嵌入式,自动驾驶等
- 可以与其他语言通讯,C#调用C++,C++调用Lua
基础语法
01输出
print("测试")
print("aabcdefg")
print("xxxxx","第二个参数","第三个参数")
02注释
print("这段代码会运行")
03变量
- Lua会自动推到类型
- 只需要给定名称,再给变量值,可以不写分号(写不写都可以)
- 不能轻易定义全局变量,会容易被修改
year = "didhaid ada"
month = true
day = 7
print(year,month,day)
print(_VERSION)
print(id)
name=nil
local data="hsxd"
04数据类型
local name="Unity"
print(type(name))
print(type(type(name)))
print(type(bb)=="nil")
print(type(123.5))
print(type(true))
print(type('hxsd'))
05字符串
local str1="abc"
print(str1)
local str2="def"
print(str1)
local str3=[[
one
two]]
print(str3)
print(str1 .. str2)
print("1" + "2")
print("长度:".. #str1)
06字符串相关函数
print(string.upper("abc"))
print(string.lower("ABC"))
print(string.find("abcdefg","cde"))
print(string.reverse("abcdef"))
print(string.sub("abcdef",3))
print(string.sub("abcdef",3,-2))
print(string.sub("abcdef",3,#"abcdef"-1))
print(string.format("Im the %d player,other is %d",1,2))
print(string.rep("abc",4))
print(string.char(65))
print(string.byte("A"))
print(string.gsub("abcd","bc","**"))
07数组Table
local data={}
data={"abc",123,[-1]=100,[0]=99,[4]=233,"afafafaf"}
print(type(data))
print(data[3])
print(#data)
data[1]="def"
print(data[1])
local data2={{"aa","bb"},{11,22}}
print(data2[2][1])
08运算符
print(2^3)
print(1~=2)
local i = 0
i=i+1
09 条件判定
判断
local conl=false
if(conl)
then
print("条件1达成")
elseif(true)
then
print("条件3达成")
else
print("条件2达成")
end
if(true)
then
if(true)
then
print("进入第二层")
end
end
循环
local num = 1
while(num<3)
do
print(num)
num=num+1
end
local num = 1
repeat
print(num)
num=num+1
until(num>5)
repeat
if(1)
then
print("")
break
end
if(2)
then
print("")
break
end
if(3)
then
print("")
break
end
until(false)
for
local data={"aa","bb","cc"}
for i=1,#data,2
do
print(data[i])
end
for i=#data,1,-1
do
print(data[i])
end
迭代器
local data={one="cc","aa","bb",[4]=3,[-1]=4,["two"]="dd"}
for k,v in ipairs(data)
do
print("k:".. k..",v:"..v)
end
print(".................")
for k,v in pairs(data)
do
print("k:".. k..",v:"..v)
end
10 函数
function func1()
print("这是func1")
end
func1()
local func2=function()
print("这是func2")
end
local func3 = function(a,b)
print(a+b)
end
func3(5,7)
func3(5,7,9)
local func4=function(...)
local arg={...}
local total=0
for k,v in pairs(arg)
do
total=total+v
end
print(total)
end
func4(1,2,3)
func4(1,2,3,4,5)
function func5()
return 99,100
end
local num1,num2=func5()
print(num1)
print(num2)
11Table
local data={one="cc","aa","bb",[4]=3,[-1]=4,["two"]="dd"}
print(data[2])
print(data["one"])
print(data.two)
data.func1=function()
print("data表中func1函数")
end
data.func1()
data.func2=function()
print(data.two)
end
data.func2()
data.func3=function(self)
print("func3"..self.two)
end
data:func3()
function data:func4()
print("func4"..self.two)
end
data:func4()
12 子文件加载和元表
print(package.path)
require("01.HelloWorld")
热更新
print(package.loaded["subfile/subfile1"])
package.loaded["subfile/subfile1"]=nil
require("subfile/subfile1")
APPNAME ="HSXD"
local config = {}
config.appName="hxsd"
return config
local config= require("subfile/config")
print(config.appName)
print(APPNAME)
13元表
local t1={1,2,3}
print(t1[1])
print(t1[2])
print(t1[3])
setmetatable(
t1,
{
__tostring = function(t)
local format="{"
for k,v in pairs(t)
do
print(v)
format=format.."("..k ..",".. v .. "),"
end
format=format.."}"
return format
end
}
)
print(t1)
mytable = setmetatable(
{ 10, 20, 30 },
{
__tostring = function(mytable)
sum = 0
for k, v in pairs(mytable) do
print(k..','..v)
sum = sum + v
end
return "表所有元素的和为 " .. sum
end
}
)
print(mytable)