☺ lua 和 javaScript 差不多的,就是一些语法的细节不同,学过js,再注意一下下面的细节,就能上手了~
快速入门,可以直接看一下菜鸟教程的lua:https://www.runoob.com/lua/lua-tutorial.html
Lua 和 Js 的不同
Lua 概述
Lua概述
- Lua是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
Lua特性
1.轻量级
- 使用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。
2.可扩展
- Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。
3.其它特性
支持面向过程(procedure-oriented)编程和函数式编程(functional programming)
自动内存管理;只提供了一种通用类型的表(table),用它可以实现数组,哈希表,集合,对象、字典,并且table是变长变量
语言内置模式匹配;闭包(closure);函数也可以看做一个值;提供多线程(协同进程,并非操作系统所支持的线程)支持
通过闭包和table可以很方便地支持面向对象编程所需要的一些关键机制,比如数据抽象,虚函数,继承和重载等
1、注释
(1) 单行注释:
--
(2) 多行注释:
--[[ 多行注释 多行注释 --]]
2、变量
全局变量:
- 默认情况下,没有被local 修饰的变量都是全局变量,不管它的位置在哪里
- 访问一个没有初始化的全局变量也不会出错,只不过得到的结果是:nil
- 如果你想删除一个全局变量,只需要将变量赋值为nil。
局部变量[私有]
- local 修饰
nil (空)
字符串
-
字符串由一对双引号或单引号来表示
-
也可以用 2 个方括号 "[[]]" 来表示"一块"字符串
string1 = "this is string1" string2 = 'this is string2' html = [[ <html> <head></head> <body> <a href="http://www.runoob.com/">菜鸟教程</a> </body> </html> ]] print(html)
☺ 字符串拼接,使用的是 ..
-- 举例子: > print("a" .. 'b') ab > print(157 .. 428) 157428
加号 + ,这和java有区别,会把字符串转成数学的加分运算
-- 举例子: > print("2" + 6) 8.0 > print("2" + "6") 8.0
计算字符串长度,使用#
> len = "www.runoob.com" > print(#len)
3、循环语句、判断语句
循环语句
(1) while
while(condition) do statements end
(2) for
var 从 exp1 变化到 exp2,每次变化以 exp3 为步长递增 var,并执行一次 "执行体"。exp3 是可选的,如果不指定,默认为1。
for var=exp1,exp2,exp3 do <执行体> end -- 举例子: tab1 = { key1 = "val1", key2 = "val2", "val3" } for k, v in pairs(tab1) do print(k .. " - " .. v) end
(3) repeate
repeat statements until( condition )
判断语句
--[ 0 为 true ] if(0) then print("0 为 true") end
4、函数获取可变参数的长度,也是使用#变量,或者使用select方法
-- 举例子: function average(...) result = 0 local arg={...} --> arg 为一个表,局部变量 for i,v in ipairs(arg) do result = result + v end print("总共传入 " .. #arg .. " 个数") return result/#arg end print("平均值为",average(10,5,3,4,5,6)) ----------------------------------- function average(...) result = 0 local arg={...} for i,v in ipairs(arg) do result = result + v end print("总共传入 " .. select("#",...) .. " 个数") return result/select("#",...) end print("平均值为",average(10,5,3,4,5,6))
5、select 方法
- select('#', …) 返回可变参数的长度。
- select(n, …) 用于返回从起点 n 开始到结束位置的所有参数列表
- 如果这时候使用一个变量指向方法 select(n, …),它只会得到第 n 位置的参数值
function f(...) a = select(3,...) -->从第三个位置开始,变量 a 对应右边变量列表的第一个参数 print (a) print (select(3,...)) -->打印所有列表参数 end f(0,1,2,3,4,5) -- 结果: 2 2 3 4 5
6、lua 的运算符
-
通用的加减乘除外,还有整除 // , 比如:5//2 输出结果 2
-
不等于 ~=
-
逻辑运算符:and、or、not
-
其他运算符:
.. 连接两个字符串
# 一元运算符,返回字符串或表的长度
7、转义字符
所有的转义字符和所对应的意义:
| 转义字符 | 意义 | ASCII码值(十进制) |
|---|---|---|
| a | 响铃(BEL) | 007 |
| b | 退格(BS) ,将当前位置移到前一列 | 008 |
| f | 换页(FF),将当前位置移到下页开头 | 012 |
| n | 换行(LF) ,将当前位置移到下一行开头 | 010 |
| r | 回车(CR) ,将当前位置移到本行开头 | 013 |
| t | 水平制表(HT) (跳到下一个TAB位置) | 009 |
| v | 垂直制表(VT) | 011 |
| 代表一个反斜线字符''' | 092 | |
| ' | 代表一个单引号(撇号)字符 | 039 |
| " | 代表一个双引号字符 | 034 |