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

步骤:

bash 复制代码
​
[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  Current

Dload  Upload   Total   Spent    Left  Speed

100  352k  100  352k    0     0  16242      0  0:00:22  0:00:22 --:--:--  9753 [root@localhost lua]# ll

total 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 356

drwxr-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]# ll

total 12

drwxr-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 -v

Lua 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 -v

Lua 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 \> ****脚本式:**** ```bash 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]# windows D:\lua>lua hello.lua script lua win D:\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++数据类型。

相关推荐
李白同学4 小时前
C++:list容器--模拟实现(下篇)
开发语言·数据结构·c++·windows·算法·list
一丢沙4 小时前
Verilog 硬件描述语言自学——重温数电之典型组合逻辑电路
开发语言·算法·fpga开发·verilog
炒毛豆5 小时前
vue3+antd实现华为云OBS文件拖拽上传详解
开发语言·前端·javascript
THMAIL5 小时前
攻克 Java 分布式难题:并发模型优化与分布式事务处理实战指南
java·开发语言·分布式
完美世界的一天5 小时前
Golang 面试题「中级」
开发语言·后端·面试·golang
Morpheon6 小时前
Intro to R Programming - Lesson 4 (Graphs)
开发语言·r语言
代码AI弗森6 小时前
使用 JavaScript 构建 RAG(检索增强生成)库:原理与实现
开发语言·javascript·ecmascript
Tipriest_7 小时前
C++ 中 ::(作用域解析运算符)的用途
开发语言·c++·作用域解析
Swift社区7 小时前
Java 常见异常系列:ClassNotFoundException 类找不到
java·开发语言
Tipriest_8 小时前
求一个整数x的平方根到指定精度[C++][Python]
开发语言·c++·python