当前位置: 首页 > news >正文

Lua基础+Lua数据类型

Lua基础

Lua介绍

特点:轻量、小巧。C语言开发。开源。

设计的目的:嵌入到应用程序当中,提供灵活的扩展和定制化的功能。 lua+nginx,lua+redis。

环境安装

windows上安装lua

检查机器上是否有lua

C:\Users\cpf>lua

'lua' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

C:\Users\cpf>

打开官网:lua.org

点击下载:

得到文件:LuaForWindows_v5.1.5-52.exe 双击,一直下一步。

验证安装结果:

C:\Users\cpf>lua

Lua 5.1.5  Copyright (C) 1994-2012 Lua.org, PUC-Rio > print("hello world")

hello world >

C:\Users\cpf>

linux安装lua

官网:The Programming Language Lua

步骤:

​
[root@localhost /]# mkdir lua [root@localhost /]# cd lua/[root@localhost lua]# curl -R -O http://www.lua.org/ftp/lua-5.4.4.tar.gz% Total    % Received % Xferd  Average Speed   Time    Time      Time  CurrentDload  Upload   Total   Spent    Left  Speed100  352k  100  352k    0     0  16242      0  0:00:22  0:00:22 --:--:--  9753 [root@localhost lua]# lltotal 356-rw-r--r--. 1 root root 360876 Jan 13 11:15 lua-5.4.4.tar.gz [root@localhost lua]# tar zxf lua-5.4.4.tar.gz[root@localhost lua]# ll total 356drwxr-xr-x. 4 1026 1000     58 Jan 13 11:15 lua-5.4.4-rw-r--r--. 1 root root 360876 Jan 13 11:15 lua-5.4.4.tar.gz[root@localhost lua]# cd lua-5.4.4 [root@localhost lua-5.4.4]# lltotal 12drwxr-xr-x. 2 1026 1000  189 Jan 13 06:33 doc-rw-r--r--. 1 1026 1000 3146 Nov  4 12:25 Makefile-rw-r--r--. 1 1026 1000  151 Jan 13 11:15 README drwxr-xr-x. 2 1026 1000 4096 Jan 13 06:29 src[root@localhost lua-5.4.4]# make all test[root@localhost lua-5.4.4]# make install检查lua脚本:[root@localhost lua-5.4.4]# lua -vLua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio [root@localhost lua-5.4.4]# cd /usr/local/bin/[root@localhost bin]# ./lua -vLua 5.4.4  Copyright (C) 1994-2022 Lua.org, PUC-Rio [root@localhost bin]#​

编程方式

交互式:

linux:

[root@localhost lua-script]# lua

Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio > print("hello")

hello

> ^C

windows:

D:\lua>lua

Lua 5.1.5  Copyright (C) 1994-2012 Lua.org, PUC-Rio > print("hello")

hello

>

脚本式:

linux:[root@localhost lua-script]# pwd /lua/lua-script[root@localhost lua-script]# vi hello.lua[root@localhost lua-script]# lua hello.lua script lua[root@localhost lua-script]#windowsD:\lua>lua hello.lua script lua winD:\lua>

lua编程

基本语法

注释:

print("script lua win") -- 单行注释

--[[

多行注释 ]]--

标识符:

类似于:java当中 变量、属性名、方法名。

以字母(a-z,A-Z)、下划线 开头,后面加上0个或多个 字母、下划线、数字。 不要用下划线+大写字母。

保留字。

总结一点:按照正常思维命名即可。

全局变量:

print(a) -- nil a=1

print(a)

a=nil --销毁a print(a)

数据类型

nil

没有任何有效值,就是一个 nil。

删除的作用。全局变量和table。

print("--------删除---------") -- 定义一个table

myTab = {key1 = "value1", key2 = "value2"} for k,v in pairs(myTab) do

print(k.."-"..v) end

print("--------删除key1后---------") myTab.key1 = nil

for k,v in pairs(myTab) do

print(k.."-"..v)

end

如何判断变量是否为nil

boolean

false(false\nil), true(其他都为true,包括0)

print("--------boolean---------")

print(type(true))

print(type(false))

print(type(nil))

if false or nil then

print("nil 被当成为 true") else

print("nil 为false") end

print("--------测试0---------")

if 0 then

print("0是true") else

print("0是false") end

number

双精度(8个字节)。

print("---------测试number-------------") a = 10

print(type(a))

String

字符串用单引号或双引号来表示。

print("双引号字符串")

print("单引号字符串")

 [[可以换行的字符串 ]]

i = [[

我是中国人,

我爱我的祖国! ]]

print(i)

字符串和数字进行数学运算,优先将 字符串 转 成 数字。

print("1" + 2)

print("1" + "2")

print("1+2")

字符串连接

-- print("error"+1)

print("error"..1)

计算字符串长度

testLenth = "abcde"

print("testLenth的长度为:"..#testLenth)

table

类比成java当中:数组,map,链表,队列等。

table的key的索引,从1开始。

print("---------测试 table-------------") tab1 = {}

tab2 = {"a","b","c"}

tab3 = {key1="value1", key2 = "value2"} print("tab3-:")

for k,v in pairs(tab3) do print(k.."="..v)

end

print("tab3:")

tab1["a_key"]="a_value" for k,v in pairs(tab1) do

print(k.."="..v) end

for k,v in pairs(tab2) do print(k.."="..v)

end

print("tab3-:")

tab3["key2"] = nil

for k,v in pairs(tab3) do

print(k.."="..v) end

print("tab3:")

function

阶乘:

function factorial(n) if n == 0 then

return 1

else

return n * factorial(n - 1) end

end

testFac = factorial

print("6的阶乘结果:"..testFac(6))

匿名函数

print("------------匿名function-------------") function testPrint(tab, func)

for k,v in pairs(tab) do

print(func(k,v)) end

end

tab1 = {"a","b","c"}

testPrint(tab1,

function(k,v)

return k.."="..v end

)

thread:类似于线程,独立的栈,局部变量。

userdata:存储c 、 c++数据类型。

http://www.dtcms.com/a/324020.html

相关文章:

  • Java学习第一百二十一部分——HTTP
  • 超越基础!一文掌握CNN/Transformer/MoE架构,实战多模态AI(第三章)
  • 《解锁 C++ 基础密码:输入输出、缺省参数,函数重载与引用的精髓》
  • NLP 2025全景指南:从分词到128专家MoE模型,手撕BERT情感分析实战(第四章)
  • FlinkSQL Joins全解析
  • Spring基于XML的自动装配
  • 低版本 IntelliJ IDEA 使用高版本 JDK 语言特性的问题
  • IntelliJ IDEA 2025.2 重磅发布
  • 第16届蓝桥杯Scratch选拔赛初级及中级(STEMA)2025年1月12日真题
  • 机器学习——TF-IDF 衡量词语在文档中重要程度
  • 【代码随想录day 15】 力扣 257. 二叉树的所有路径
  • LeetCode 括号生成
  • Jmeter性能测试之检测服务器CPU/Memory/磁盘IO/网络IO
  • 服务器硬件电路设计之 I2C 问答(三):I2C 总线上可以接多少个设备?如何保证数据的准确性?
  • 【Qt】QCustomPlot 简易配置教程
  • XML 指南
  • Redis一站式指南一:从MySQL事务到Redis持久化及事务实现
  • Baumer高防护相机如何通过YoloV8深度学习模型实现道路水坑的检测识别(C#代码UI界面版)
  • git merge和git rebase的区别
  • 本地WSL部署接入 whisper + ollama qwen3:14b 总结字幕增加利用 Whisper 分段信息,全新 Prompt功能
  • Unity 遮挡显示效果 Shader
  • 计算机网络:超网即路由聚合一定需要连续的IP地址吗?
  • LeetCode 刷题【37. 解数独】
  • 企业级WEB应用服务器TOMCAT — WEB技术详细部署
  • 全栈:如果SSM项目里的数据库是mysql而自己使用的是SQLserver应该替换哪些文件?
  • 数学建模:控制预测类问题
  • UE什么贴图要关闭SRGB
  • LLM attention 变体
  • 基于FFmpeg的B站视频下载处理
  • 组合数学覆盖设计阶段成果:C(12,4)的5组四元组覆盖C(12,3)所有三元组