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/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)

更多推荐

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