一文懂Lua

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.更多内容
  • 虚变量
  • 操作符:
    • 点号
    • 冒号
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值