Lua基础知识

文章目录

  • [1. Lua简介](#1. Lua简介)
    • [1.1 设计目的:](#1.1 设计目的:)
    • [1.2 特性](#1.2 特性)
    • [1.3 应用场景](#1.3 应用场景)
  • [2. Lua脚本学习](#2. Lua脚本学习)
    • [2.1 安装](#2.1 安装)
    • [2.2 lua操作](#2.2 lua操作)
    • [2.3 lua案例](#2.3 lua案例)

学习lua主要是为了后续做高性能缓存架构所准备的基础技术。可以先了解下基础,在实际使用时,再查缺补漏。

1. Lua简介

Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

Lua 是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组于 1993 年开发的,该小组成员有:Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo

1.1 设计目的:

为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

1.2 特性

  • 小巧的脚本语言
  • 设计目的为了通过灵活嵌入应用程序中从而为应用程序提供灵活的扩展和定制功能
  • 所有的操作系统和平台上都可以编译,运行lua脚本
  • 所有脚本引擎中,Lua的速度是最快的

1.3 应用场景

  • 游戏开发
  • 独立应用脚本
  • 高性能Web应用(天猫、京东都有应用)
  • 扩展和数据库插件,如:MySQL proxy和MySQL WorkBench

2. Lua脚本学习

2.1 安装

shell 复制代码
curl -R -O http://www.lua.org/ftp/lua-5.4.6.tar.gz
tar -zxvf lua-5.4.6.tar.gz
cd lua-5.4.6
make all test

# 这里替换使用新的lua版本
# 由于centos自带有lua,这里需要替换centos中lua旧版本
rm -rf /usr/bin/lua
ln -s /opt/local/lua-5.4.6/src/lua /usr/bin/lua

2.2 lua操作

Lua 是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回。

Lua 中有8个基本类型分别为:nil、boolean、number、string、userdata、function、thread 和 table。

数据类型 描述
nil 这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。
boolean 包含两个值:false和true。
number 表示双精度类型的实浮点数
string 字符串由一对双引号或单引号来表示
function 由 C 或 Lua 编写的函数
userdata 表示任意存储在变量中的C数据结构
thread 表示执行的独立线路,用于执行协同程序
table Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。

2.3 lua案例

脚本 course.lua

lua 复制代码
--注释
--创建一个对象
local course = {}

--在course对象中创建方法
function course.courseName(index)
    if index == 1 then
      return "java"
    else
        return "other"
    end
end

--注意:一定要返回,否则会报错
return course

脚本student.lua

lua 复制代码
--接收参数arg1
local arg1 = tonumber(arg[1])
local cr = require("course")
print(cr.courseName(arg1))

测试:

相关推荐
quantdash_cc5 小时前
从实时行情到价格观察表:用 Python 和 Pandas 构建策略输入数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
昂好的day6 小时前
VisionMaster 通信模块实战(上):Modbus、TCP 收发、协议组装解析
开发语言·网络·网络协议·tcp/ip·c#
努力实干7 小时前
面向对象设计原则——C++
开发语言·c++·数码相机
NetX行者8 小时前
四语言 Hello World 背后:编译模型与运行时对比
开发语言
Pin_Qing9 小时前
账单没超,请求先被拒了
大数据·开发语言·人工智能
2601_962885729 小时前
如何用 Python 计算 VaR 和 CVaR(在险价值)?
开发语言·python
郝亚军9 小时前
manifest 中 `sha256` 与 `signValue` 的作用
java·开发语言·数据结构
譕痕10 小时前
stripe 实例
java·开发语言·stripe·checksession
墨子夕10 小时前
设计模式——Java × Python 双语言精讲 · 23 个经典模式 + 现代演进(前言篇)
java·开发语言·设计模式
_菜鸟果果10 小时前
高德地图 JS API 2.0 在国产 Linux/ARM 电脑上渲染失败 的排查与解决
linux·开发语言·javascript