1、简介:
Lua 语言最初的设计目标是要能够嵌入到其他应用程序里,所以它天生就是非常 “轻量级”,语法简洁优雅,很容易学习,任何一个有初级变成经验的人都可以在几天只能完全掌握并投入实际开发工作。
但 “轻量级” 并不意味着劣化,比起其他脚本语言来说 Lua 的功能也毫不逊色,该有的特性都有,而且表(table)结构非常灵活,能够模拟出其他语言里的数组、集合、字典、类、名字空间等特性,此外还提供闭包 (closure) 支持函数式变成,提供协程(coroutine)支持并发变成,功能非常丰富。
Lua 语言小巧紧凑,本身只有一个精简的核心和最基本的库,所以代码的执行效率非常高,是所有脚本语言中速度最快的,这也使得它易于被移植或嵌入到各种软硬件平台,实现脚本化的扩展和定制功能,实用性很强。OpenResty 选择它正式看中了这个特性。
目前 Lua 语言有 5.1、5.2 和 5.3 三个主要的版本,版本之间有一些语法上的差异,不完全兼容。OpenResty 使用的是 Lua 5.1+LuaJIT 扩展。下面介绍 Lua 5.1 版本语法。
2、环境搭建
3、变量
数值类型
lua 是一门动态类型的语言,可以使用lua的type()函数来判断变量的类型
- nil 空变量,类似于Java的null,Python None,任何未初始化的对象都是nil
- boolean 布尔类型,(nil和false)=false,其余都是true
- number 数字类型,不区分整数和浮点
- string 字符串类型,可是使用双引号,或者单引号
- table 表,可以模拟Map+List,是lua最常用的数据结构
- function 函数,Lua动态语言,支持闭包 (closure),所以函数也是一种变量
print(type(nil)) -- nil
print(type(true)) -- boolean
print(type(42)) -- number
print(type(2.718)) -- number
print(type("metroid")) -- string
print(type('metroid')) -- string
print(type(print)) -- function (print 是 Lua 标准库里的一个函数)
print(type(table)) -- table(table 是 lua 标准库的一个表)
变量范围
- 1、模块概念,在lua中,一段可以执行的lua代码文件,称为一个模块。如果需要使用某个模块的功能,需要使用require()函数,将
- 2、local变量
- 3、全局变量
注释
- 单行注释:使用"–"
- 多行注释:是用"–[[多行注释]]–",
3.条件
条件
1、算数
2、关系
3、逻辑 and or not
a and b 如果 a 为 nil,则返回 a,否则返回 b;
a or b 如果 a 为 nil,则返回 b,否则返回 a。
4.控制语句
控制:
条件:
if condition then
body
elseif condition then
body
else
body
end
循环:
1、while
while conditon do
body
then
2、repeat
local var
repeat
body
until condition 【condition=true 结束,condition=false 循环】
3、for 语句有两种形式:数字 for(numeric for)和范型 for(generic for)。
for var = begin, finish, step do
body
end
for k,v ipairs(table) do
body
end
for k pairs(table) do
body
end
中断:break,return,goto
5.函数
函数:
function fun_name(var)
body
end
1、返回多个值
2、可变参数 local parms={....} 参数是一个table
3、基本类型的值传递,table的引用传递
lib 库:
IO
table metatable
String
Date
6.扩展
6.1 table
metatable:
1、重载
2、强引用,弱引用
3、实现面向对象+模块
内存回收
6.2 corountine
1、create
2、yiled
3、resume
7.dubug
debug信息
8.更多内容
- 虚变量
- 操作符:
- 点号
- 冒号