LUA----简单数据类型

注释

--单行注释
--lua语句可以省略分号

print("你好世界")
print("你好世界")
--[[
多行
注释
]]

变量

print("*******变量*********")

--nil number string boolean
--lua中所有的变量不需要指定类型,会自动判断

--type返回值是string
--nil 空
a=nil
print(a)
print(type(a))
--number 所有的数值都是number
a=1
print(a)
print(type(a))
a=1.2
print(a)
print(type(a))

--lua里没有char,只有string
a="123123"
print(a)
print(type(a))
a='123123'
print(a)
print(type(a))

a=true
print(a)
a=false
print(a)

字符串

print("********字符串长度******")
--一个汉字3长度
s="abcdefg字符串"
print(#s)

print("********字符串多行打印******")
print("1233\n123")

s=[[我是
猪
八戒]]
print(s)


print("********字符串拼接******")
print("123".."456")
print(string.format("我今年%d岁",18))



print("********别的类型转字符串******")
a=true
print(tostring(a))


print("********字符串提供的方法******")
str="abcDEF"
--不会改变原字符串
print(string.upper(str))
print(str)
print(string.lower(str))

--翻转
print(string.reverse(str))
--索引查找,LUA中从1开始
print(string.find(str,"DEF"))

--截取字符串
print(string.sub(str,3))
print(string.sub(str,3,4))
--字符串修改
print(string.gsub(str,"DE","**"))

--字符串转ASCII码
a=string.byte("Lua",1)
print(a)
--ASCII码转字符串
print(string.char(a))

运算符

--LUA没有的:++,--,+=,-=,*=等
--字符串进行算数运算会转number
print("123"+1)

print("幂运算"..2^5)

--LUA中的不等于是:~=
--LUA的逻辑运算符:and or  not
print(true and false)
print(not true)

条件分支语句

print("********条件分支语句******")
--if 条件 then......end
a=9
if a>5 then
	print("123")
end

--多分支
if a<5 then
	print("123")
elseif a==6 then
	print("a=6")
else
	print("321")
end

循环

num=0

--while 条件 do..... end
while num<5 do
	print(num)
	num=num+1
end

--repeat语句
num=0
repeat
	print(num)
	num=num+1
until num>5	

--for循环
for i=1,5 do  --默认i会+1
	print(i)
end


for i=1,5,2 do  --如果要自定义增量,直接逗号后面写
	print(i)
end

for i=5,1,-1 do  --如果要自定义增量,直接逗号后面写
	print(i)
end


函数

print("********函数******")
--funtion 函数名()
--end
--a = funtion()
--end

print("********无参无返回值******")
function F1()
	print("F1函数")
end
F1() --必须在声明函数后才能调用

F2 = function()
	print("F1函数")
end
F2()




print("********有参数******")
--啥都能传
function F3(a)
	print(a)
end
F3(1)
F3("123")
F3(true)
--如果传入的个数不匹配,补nil或者丢弃多的
F3()
F3(1,2,3)



print("********有返回值******")
function F4(a)
	return a,"123",true --可以多返回值,能一一对应就行,不然多的就舍弃
end
temp1,temp2,temp3 = F4(1)
print(temp1)
print(temp2)
print(temp3)


print("********函数的类型******")
F5 = function()
	print("123")
end
print(type(F5))




print("********函数的重载******")
--LUA中不支持重载
function F6()
	print("123123")
end

function F6(str)
	print(str)
end

F6()






print("********变长函数******")

--变长参数用表存起来
function F7( ... )
	arg = {
    
    ...}
	for i=1,#arg do
		print(arg[i])
	end
end
F7(1,"123",3,4,5,6,7)


print("********函数嵌套******")
function F8(  )
	return function ()
		print(213)
	end	
end
f9=F8()
f9()

--LUA中闭包的体现
function F9( x )
	--改变传入参数的生命周期
	return function ( y )
		return x+y
	end
end

f10=F9(10)  --本来函数执行完10就没用了,现在10作为x被暂存
print(f10(5)) --x被使用

猜你喜欢

转载自blog.csdn.net/memory_MM_forever/article/details/113847622