Lua脚本语言——Lua脚本基础语法

简介: Lua脚本语言——Lua脚本基础语法


1、LUA是一门脚本语言


①、什么是脚本?


脚本语言又被称为扩建的语言,或者动态语言,是一种编程 语言,用来控制软件应用程序,脚本通常以文本(如ASCII)保存,只在 被调用时进行解释或编译


②、 脚本语言的执行


由于脚本语言是纯文本的,所以CPU无法直接执行脚本程序, 而是通过脚本解析器来执行脚本语言


③、优缺点


优点:快速开发、容易部署、易学易用、动态代码 缺点:不够全面、效率不高、构建代码结构性不高


④、常用的脚本语言


bash、python、JavaScript、Lua、PHP、ActionScript、Ruby……


2、LUA脚本


①、定位


Lua天生的定位就是做为一门"胶水语言"出现的.它没有自己独立的环境, 必须依附在宿主语言的环境中才能起作用.所以从一开始,Lua就非常清楚自己的定 位:它不想自己做大,而是做的够精简够小,嵌入在宿主语言中,帮忙提供一些动态 特性


②、保存和运行


运行可以通过 Lua 的交互模式,也可以用记事本编辑代码保存为 .lua 的格式,通过 lua 编译器运行。也可以通过第三方工具,将 lua 打包独立运行。


③、特性


轻量级 — 轻量级Lua语言的官方版本只包括一个精简的核心和最基本的 库。这使得Lua体积小、启动速度快,从而适合嵌入在别的程序里。5.0.2版的Lua 的内核小于120KB,而Python的内核大约860KB,Perl的内核大约1.1MB。


可扩展 —可扩展 Lua并不象其它许多"大而全"的语言那样,包括很多功 能,比如网络通讯、图形界面等。但是Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就 内置的功能一样。


其它特性 — 支持面向过程和面向对象;自动内存管理;


在线学习 http://www.mcqyy.com/RunCode/lua/


3、LUA基本语法


①、Lua 保留字(关键字)


and、 break、 do、 else、 elseif、 end、 false、 for、 function、 if、 in、 local、 nil、 not、 or、 return、 then、 true、( repeat、 until)、 while 注: Lua中没有continue


②、Lua符号


算术运算符 + -*/% ^ 求幂 - 取反


关系运算符 == ~= < > <= >=


逻辑运算符 and or not


其他运算符 … #


其他符号 … 不定参数 . :


③、Lua 类型


1、nil 空类型


类似 C++中的nullptr_t


2、boolean 只有两个可选值:true(真) 和 false(假),Lua 把 false 和 nil 看作是 “假”,其他的都为“真”


3、number 默认只有一种 number 类型 – double(双精度)类型


4、string 字符串由一对双引号或单引号来表示


5、*table Lua 中的表(table)其实是一个“关联数组”(associative arrays),数组的 索引可以是数字或者是字符串


6、function 函数类型 函数可以存在变量里


7、thread 在 Lua 里,最主要的线程是协同程序。它跟线程差不多,拥有自己独立的栈、 局部变量和指令指针,可以跟其他协同程序共享全局变量和其他大部分东西。


8、userdata 是一种用户自定义数据,用于表示一种由应用程序或 C/C++ 语言库所创建的 类型,可以将任意 C/C++ 的任意数据类型的数据(通常是 struct 和 指针)存储到 Lua 变量中 调用


4、总结


  • 1、脚本语言、执行、优缺点


  • 2、Lua脚本定位、特性 •


  • 3、基本语法,关键字、符号、类型


– 1、没有continue保留字


– 2、定义变量不需要类型,它被赋值成什么它就是什么类型,并且随时可以改变类型


– 3、number类型包含了整数和浮点数


– 4、string类型的值只能整体赋值,不能修改其中某个字符


– 5、string的表达方式很多


– 6、表类型其实只是保存表数据的引用,因此当表t1 = t2之后,改变t2,也就改变了t1, 改变了t1,也就改变了t2


– 7、table包含了数组和映射表


– 8、除法不像C语言 3/5不是0,而是0.6


– 9、and和or的操作结果不是boolean类型,而是参与运算的数据类型


– 10、在逻辑判断时,0不代表false,只有false和nil代表false


– 11、函数可以返回多个值


– 12、可以对多个变量进行赋值


简单代码例子


-- -- 判断变量类型
-- a = 10.1
-- print(type(a))
-- print(type(true))
-- print(type(nil)) --只有nil 和false 是false
-- print(type("aaaa"))
-- function a1()  --函数
-- end
-- print(type(a1))
-- -- 字符串
-- str1 = "aaa"
-- str2 = 'bbb'
-- str3 =[[ 
--         ccc
--                 dddd
--         ]]
-- print(str1)
-- print(str2)
-- print(str3)
-- print("2"+6) -- 字符串转为 number
-- print("str"..1)  -- ..拼接字符串
-- --变量交换
-- a  = 10 
-- b  = 20
-- a,b = b,a
-- print(a)
-- print(b)
-- table 
local t = {1,2,3,4,5,6} --声明局部表 t
-- for i,v in ipairs(t) do
--   print("i = " , i ,"v = " , v)
-- end
local t2 = { id = 1, name ="德玛西亚", atk = 10000 , def = 10000 }
print(t2.id)
print(t2.name)
print(t2.atk)
print(t2.def)
print(t2["name"])
local t3 = {1,2,3,4,5,6,"aaaa",name = "孙悟空",7,8,9} --会将 有序内容 放到同一个空间,无序内容放入另一个空间
print(t3[8]) -- 表是从1 开始索引
function f1( a )
   print("a = " ,a) 
   a2 = 20000
   return a,a2
end
b ,b2 = f1(10000)
print(b ,b2)
--  and or 三目运算符  
a = 100
b = 200
c =  a > b   and a or b
print(c)
相关文章
|
1月前
|
缓存 NoSQL Java
【Redis】5、Redis 的分布式锁、Lua 脚本保证 Redis 命令的原子性
【Redis】5、Redis 的分布式锁、Lua 脚本保证 Redis 命令的原子性
62 0
|
2月前
|
算法 NoSQL Java
springboot整合redis及lua脚本实现接口限流
springboot整合redis及lua脚本实现接口限流
76 0
|
1天前
|
存储 NoSQL 调度
Redis Lua脚本:原子性的真相揭秘
【4月更文挑战第20天】
4 0
Redis Lua脚本:原子性的真相揭秘
|
20天前
|
NoSQL Java Redis
lua脚本做redis的锁
这段内容是关于使用Redis实现分布式锁的Java代码示例。`RedisLock`类包含`lock`和`unlock`方法,使用`StringRedisTemplate`和Lua脚本进行操作。代码展示了两种加锁方式:一种带有过期时间,另一种不带。还提到了在加锁和解锁过程中的异常处理,并提供了相关参考资料链接。
17 3
|
22天前
|
存储 NoSQL 数据处理
Redis Lua脚本:赋予Redis更强大的逻辑与功能
Redis Lua脚本:赋予Redis更强大的逻辑与功能
|
1月前
|
监控
通过Lua脚本实现禁止员工上班玩游戏的软件的自动化任务管理
使用Lua脚本,企业可以自动化管理员工行为,防止上班时间玩游戏。Lua是一种轻量级脚本语言,适合编写监控任务。示例脚本展示了如何检测工作时间内员工是否玩游戏,并在发现时执行相应操作,如关闭游戏或发送警告。此外,另一脚本演示了如何将监控数据通过HTTP POST自动提交到网站,以实现有效的行为管理。这种解决方案灵活且可定制,有助于提升工作效率。
118 1
|
1月前
|
NoSQL Java 数据库
优惠券秒杀案例 - CAS、Redis+Lua脚本解决高并发并行
优惠券秒杀案例 - CAS、Redis+Lua脚本解决高并发并行
|
1月前
|
Java API Maven
|
2月前
|
NoSQL Java 数据处理
Redis和Spring Boot的绝佳组合:Lua脚本的黑科技
Redis和Spring Boot的绝佳组合:Lua脚本的黑科技
55 0
|
3月前
|
存储 NoSQL 关系型数据库
Redis协议与异步方式(redis网络层、pipeline、事务、lua脚本、ACID特性、发布订阅、hiredis实现同步连接与异步连接)
Redis协议与异步方式(redis网络层、pipeline、事务、lua脚本、ACID特性、发布订阅、hiredis实现同步连接与异步连接)
71 0

相关实验场景

更多