Lua语法结构

Lua基础

注释

lua 复制代码
print("hello.")
-- 单行注释的写法
--[[
多行注释的写法
--]]

标识符

关键字

**and **
break

**do **
else

**elseif **

**end **
false
for

**function **
if
in
local
nil
not
or
repeat
return
then
true
until

**while **

数据类型


nil

** boolean**

** number**

** string**

** function**

** userdata**
thread

** table**

lua 复制代码
--科学计数法
print(2e+1) -- 2x10^1
print(2e-1)

```lua

--string

print("hello"..."world");

print("1"..."2")

print(type("1"..."2")) -- 12 string

print("1"+"2")

print(type("1"+"2")) --3 number

lua 复制代码
--table

table1 = {} --空表
table2 = {f1 = 100,key2 = "value"}

print(table1)
print(table2.f1)
print(table2.key2)
print(table2["key2"])

--使用索引来获取
fruits = {"apple","pear","oranger"}
for i,j in pairs(fruits) do
	print(i.."|"..j)
end
print(fruits[1])
print(fruits[2])
print(fruits[3])

--table是自动扩容的

fruits[1] = "newApple"
print(fruits[1])

table的索引是从1开始

函数

lua 复制代码
--函数
--函数

function fact(n)
	if n == 1 
  then
		return n
	else
		return n*fact(n-1)
	end
end

print(fact(5))


function ReadMap(table,func)
	for k,v in pairs(table) do
		func(k,v)
	end
end


function func(k,v)
	print("key: "..k)
	print("value: "..v)
end


fruits = {apple = 5,banana = 10,watermelon = 20}
ReadMap(fruits,func)

匿名函数

lua 复制代码
myprint = function(param)
	printFunc(param)
end

function printFunc(param)
	print("打印:"..param)
end

myprint(90)

param : 里面是一个table

变量

lua中变量的类型是可以更改的

lua 复制代码
a = 5 -- 全局变量
print(type(a))


a = "hello World"
print(type(a))


do
	local b = 10
	print(a)
	print(b) -- 10
end

print(a)
print(b) -- nil

多变量赋值

lua 复制代码
function test(a,b)
	return a,b
end


a,b = test(1,2)
print(a..b)

循环

lua 复制代码
a = 0
while(a < 5) do
	if(a%2 == 0) then
		print(a)
	end
	a = a+1
end
lua 复制代码
for i=0,10,1 do
	print(i)
end

--repeat

i = 2
repeat
	print(i)
	i = i*2
until(i > 10) --循环截至条件


for i =1,10,1 do
	j=1
	while j <= i do
		print(j)
		j= j+1
	end
end

流程控制

lua 复制代码
a = 7

if(a>10) then
	print("a大于10")
elseif a > 5 then
	print("a大于5")
elseif a > 5 then
	print("a大于0")
else
	print("a小于0")
end

运算符

~=不等于

转义字符

字符串操作

lua 复制代码
str = "My name is huangjiaqi"
str2 = string.upper(str)
str3 = string.gsub(str,"i","I")

index = string.find(str,"name")
str4 = string.reverse(str);

print(str)
print(str2)
print(str3)
print(index) --索引从1开始
print(str4)

字符串格式化

lua 复制代码
--字符串格式化


num1 = 3 ; num2 = 5
str5 = string.format("加法运算:%d+%d = %d",num1,num2,(num1+num2))
print(str5)
相关推荐
CodeGL5 分钟前
16、Python Web开发
开发语言·前端·python
喵了几个咪7 分钟前
GoWind UBA 拆解:把 Doris UNIQUE KEY 翻译成 ClickHouse——读数正确性对齐实录
开发语言·后端·clickhouse·微服务·golang·gowind
FRing0312 分钟前
JavaScript入门到精通二十九(内置构造函数(Object、Array))
开发语言·前端·javascript
syagain_zsx15 分钟前
ODB 与 MySQL:C++ 里的 ORM 实践(类即表、事务铁律与查询封装)
开发语言·数据库·c++·mysql·工具库·1024程序员节
小嘉丶学长18 分钟前
Day08 · 字符串(二)
服务器·开发语言·python·学习·1024程序员节
萌动的小火苗36 分钟前
MQTT的QoS0、QoS1、QoS2有什么区别?
开发语言·网络·python·php·信息与通信
买房动力十足36 分钟前
秒杀商城 + AI 运营:Lua 防超卖、MQ 削峰,AI 负责选品和策划
开发语言·人工智能·lua
silvamux_38 分钟前
10款模型写“君幸食”讲解词:统一事实档案与逐款审校
开发语言·php
北冥you鱼39 分钟前
Go 语言 Ticker 定时任务全解析:原理、陷阱与最佳实践
开发语言·数据库·golang
晚风予卿云月1 小时前
【C++高并发内存池】 1.定长内存池的实现
开发语言·c++·内存管理