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)