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
大数据-43 Redis 功能扩展 Lua 脚本 对Redis扩展 eval redis.call redis.pcall
大数据-43 Redis 功能扩展 Lua 脚本 对Redis扩展 eval redis.call redis.pcall
29 2
|
5月前
|
消息中间件 NoSQL Java
Redis系列学习文章分享---第六篇(Redis实战篇--Redis分布式锁+实现思路+误删问题+原子性+lua脚本+Redisson功能介绍+可重入锁+WatchDog机制+multiLock)
Redis系列学习文章分享---第六篇(Redis实战篇--Redis分布式锁+实现思路+误删问题+原子性+lua脚本+Redisson功能介绍+可重入锁+WatchDog机制+multiLock)
227 0
|
2月前
|
存储 JSON Ubuntu
如何使用 Lua 脚本进行更复杂的网络请求,比如 POST 请求?
如何使用 Lua 脚本进行更复杂的网络请求,比如 POST 请求?
|
3月前
|
Java API C语言
Lua语法(一)
Lua语法(一)
42 0
Lua语法(一)
|
3月前
Lua语法(六)——面相对象编程
Lua语法(六)——面相对象编程
33 0
|
3月前
|
Java
Lua语法(五)——垃圾回收
Lua语法(五)——垃圾回收
92 0
|
3月前
Lua语法(四)——协程
Lua语法(四)——协程
44 0
|
3月前
|
索引
Lua语法(三)——元表与元方法
Lua语法(三)——元表与元方法
42 0
|
3月前
|
缓存
Lua语法(二)——闭包/日期和时间
Lua语法(二)——闭包/日期和时间
79 0
|
3月前
|
存储 NoSQL Redis
Tair的发展问题之在Redis集群模式下,Lua脚本操作key面临什么问题,如何解决
Tair的发展问题之在Redis集群模式下,Lua脚本操作key面临什么问题,如何解决