lua语法

lua语法

1.lua数据类型

lua 脚本输出乱码,将lua脚本改为UTF-8编码,并且需要DOS下修改代码页:CHCP 65001 即可。

image-20231218210209855

基本语法

注释

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

标识符

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

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

不要用下划线+大写字母。

保留字。

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

全局变量

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

没有任何有效值,就是一个 nil。 可以用于删除

print("---delete---")
-- 定义一个table
myTab = {key1="value1",key2="value2"}
for k,v in pairs(myTab) doprint(k.."_"..v)
endprint("---after delete---")
myTab.key1=nil
for k,v in pairs(myTab) doprint(k.."_"..v)
endprint("---判断是否为nil")
print(x) -- nil
print((type(x)==nil)) -- false
print(type(x)=='nil') -- true

image-20231215163327032

  • boolean

lua会将false(false\nil) 看做是false, 其他的都看做是 true(其他都为true,包括0)

print("---boolean---")print(type(true))  -- boolean
print(type(false)) -- boolean
print(type(nil))  -- nilif false or nil thenprint("nil被当为true")
elseprint("nil为false") -- false
endprint("---测试0---")
if 0 then print("0 是true") -- true
else print("0 是false")
end
  • number

双精度(8个字节)。

print("---------测试number-------------")
a = 10
print(type(a))
  • String

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

print("双引号字符串")print("单引号字符串")

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

i = [[我是中国人,我爱我的祖国!]]print(i)

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

print("1" + 2) -- 3print("1" + "2") -- 3print("1+2") -- 1+2-- 非数字的字符串和数字进行计算,则会报错-- lua: string.lua:1: attempt to perform arithmetic on a string value
print("error"+1)

字符串连接

-- error1
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) doprint(k.."="..v)
end 
print("tab3:")tab1["a_key"]="a_value"
for k,v in pairs(tab1) doprint(k.."="..v)
end for k,v in pairs(tab2) doprint(k.."="..v)
end 
-- table的key的索引,从1开始。
-- 1=a
-- 2=b
-- 3=c-- 删除table中的元素
print("tab3-:")
tab3["key2"] = nil
for k,v in pairs(tab3) doprint(k.."="..v)
end 
print("tab3:")
  • function

阶乘:

function factorial(n)if n == 0 thenreturn 1elsereturn n * factorial(n - 1)end
end
testFac = factorial
print("6的阶乘结果:"..testFac(6))

匿名函数

print("------------匿名function-------------")
-- 定义函数
function testPrint(tab, func)for k,v in pairs(tab) doprint(func(k,v))end
end-- 定义数组调用函数
tab1 = {"a","b","c"}
testPrint(tab1,function(k,v)return k.."="..vend
)

2.变量赋值

a = 变量值。

print("---变量赋值---")
a,b=1,2
a = 1+2
print(a,b) -- 3  2

常用:x , y = y, x

a,b,c=1,2
print(a,b,c) -- 1       2       nil

变量个数 > 值的个数:按照变量的个数 补足 nil。

a,b,c = 1,2,3,4
print(a,b,c) -- 1       2       3

变量个数<值的个数:多余的值会被忽略。

a,b = 1,2
function var() a = nilb = 3local c = 4print(c) -- 4return a,b
enda,b = var()
print(a,b,c) -- nil     3       nil

多变量赋值:还可以用于函数的返回, 参数值互换。

a,b = func();

需要赋值给变量,如果能用局部变量,尽量用局部变量。

3.索引

对table中元素的访问。

tab[“key”]

tab.key

print("-----------索引--------------")
tab = {key1 = "中国",key2 = "美国"}
print(tab["key1"]) -- 中国
print(tab.key2) --美国

4.循环

用途:做一些有规律的重复操作。
循环体:一组被重复执行的语句。循环条件:判断能否继续循环。

while循环

while(循环条件)
do
业务代码;
对循环条件的控制;
end
a = 1
while(a<5)
doprint(a)a = a+1
end

for循环

数值for循环:
for var=exp1,exp2,exp3 do
循环体
end

var的值,从exp1一直到exp2,步长是exp3(是可选的,默认是1)

print("----for----")
for i=1,10,2 doprint(i) -- 1 3 5 7 9
end

exp1,exp2,exp3 只在循环开始前计算一次。

print("----for----")
for i=1,test(2) doprint(i) -- 1 2 3 4
end

泛型for循环:

是通过迭代器进行的。

a = {"one","two","three"}
for k,v in pairs(a) doprint(v)
end

repeat until

repeat
循环体
until(条件)
先执行循环体,直到满足条件。如果条件为false,继续执行循环体,如果条件为true,则跳出循
环。
a = 1
repeat a = a+1print(a)
until(a>5)
print(a)--6

5.流程控制

if()

print("-----------if-------------")
a = 1
if(a == 1) thenprint(a.."是1")
end

0 是 true。

6.函数

print()

功能:1。完成指定的任务。2。计算并返回值(可以返回多个值)。

函数的范围(local ,缺省) function 函数名称(参数列表)函数体;return 结果end

定义一个函数:实现求两个数的最大值。

print("---------------函数定义:求最大值---------------")
function testMax(num1,num2)if (num1 > num2) thenresult = num1;elseresult = num2;endreturn result;
end
print("15,20中的最大值是:"..testMax(15,20)) -- 20

函数可以作为参数进行传递。

例子:自定义打印函数。

print("---------------函数定义:自定义打印函数---------------")
myPrint = function(p)print("重新的打印函数:",p)
end;
myPrint("test");
function add(num1,num2,myPrintParam)result = num1 + num2;myPrintParam(result);
end
add(2,3,myPrint)

image-20231218215001500

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/285078.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

05_Web框架之Django二

Web框架之Django二 学习目标和内容 1、能够使用类视图的写法 2、能够使用模板语言的相关语法 3、能够理解过滤器的作用 4、能够理解并使用模板继承 一、类视图 1、类视图介绍 视图是一个可调用的对象&#xff0c;它接收一个请求然后返回一个响应&#xff0c;这个可调用对象可…

jieba-fenci 结巴分词原理讲解 segment

拓展阅读 DFA 算法详解 为了便于大家学习&#xff0c;项目开源地址如下&#xff0c;欢迎 forkstar 鼓励一下老马~ 敏感词 sensitive-word 分词 segment 分词的必要性 我们平时做文本分析&#xff0c;或者我个人想做一个繁简体转换/同义词替换等工具&#xff0c;分词都是必须…

13.FTP

FTP FTP配置 添加一个本地用户 设置个密码 服务类型是FTP 工作路径授权给用户 设置用户角色为网络管理员 开启FTP服务 R2的路径下有这些文件 在R1进行测试&#xff0c;输入刚才创建的用户密码 get 获取文件 put上传文件 也可以在PC进行访问 可以升级路由器系…

超级计算机与天气预报:精准预测的科技革命

超级计算机与天气预报&#xff1a;精准预测的科技革命 一、引言 随着科技的飞速发展&#xff0c;超级计算机已经成为现代社会不可或缺的一部分。它们在科研、工业、军事等领域发挥着重要作用&#xff0c;其中天气预报是一个颇具代表性的应用领域。本文将探讨超级计算机在天气…

MongoDB中的关系

本文主要介绍MongoDB中的关系。 目录 MongoDB的关系嵌入关系引用关系 MongoDB的关系 MongoDB是一个非关系型数据库&#xff0c;它使用了键值对的方式来存储数据。因此&#xff0c;MongoDB没有像传统关系型数据库中那样的表、行和列的概念。相反&#xff0c;MongoDB中的关系是通…

Java对象结构

Java 对象(Object 实例)结构包括三部分:对象头、对象体、对齐字节。 Object的三个部分 对象头包括三个字段&#xff0c;第一个字段叫做 Mark Word(标记字)&#xff0c;用于存储自身运行时的数据 例如 GC 标志位、哈希码、锁状态等信息。 第二个字段叫做 Class Pointer(类对象…

vue3项目,按需引入Element-plus ElMessage 样式丢失

文章目录 Element-plus使用了自动按需导入代码手动导入了API样式丢失解决方案Eslint报错 Element-plus使用了自动按需导入 vite.config.js配置如下&#xff1a; import { defineConfig } from vite import vue from vitejs/plugin-vue// 按需引入 import AutoImport from unp…

SpringBoot基于gRPC进行RPC调用

SpringBoot基于gRPC进行RPC调用 一、gRPC1.1 什么是gRPC&#xff1f;1.2 如何编写proto1.3 数据类型及对应关系1.4 枚举1.5 数组1.6 map类型1.7 嵌套对象 二、SpringBoot gRPC2.1 工程目录2.2 jrpc-api2.2.1 引入gRPC依赖2.2.2 编写 .proto 文件2.2.3 使用插件机制生产proto相关…

大语言模型加速信创软件 IDE 技术革新

QCon 全球软件开发大会&#xff08;上海站&#xff09;将于 12 月 28-29 日举办&#xff0c;会议特别策划「智能化信创软件 IDE」专题&#xff0c;邀请到华为云开发工具和效率领域首席专家、华为软件开发生产线 CodeArts 首席技术总监王亚伟担任专题出品人&#xff0c;为专题质…

2018年第七届数学建模国际赛小美赛B题世界杯足球赛的赛制安排解题全过程文档及程序

2018年第七届数学建模国际赛小美赛 B题 世界杯足球赛的赛制安排 原题再现&#xff1a; 有32支球队参加国际足联世界杯决赛阶段的比赛。但从2026年开始&#xff0c;球队的数量将增加到48支。由于时间有限&#xff0c;一支球队不能打太多比赛。因此&#xff0c;国际足联提议改变…

机器人也能干的更好:RPA技术的优势和应用场景

RPA是什么&#xff1f; 机器人流程自动化RPA&#xff08;Robotic Process Automation&#xff09;是一种自动化技术&#xff0c;它使用软件机器人来高效完成重复且有逻辑性的工作。近年来&#xff0c;随着人工智能和自动化技术的不断发展和普及&#xff0c;RPA已经成为企业提高…

【Linux】Linux运维基础

Linux简介&#xff1a; Linux是一个开源的操作系统内核&#xff0c;最初由Linus Torvalds创建。它通常与GNU工具一起使用&#xff0c;以创建一个完整的操作系统。Linux操作系统有许多基于内核的发行版&#xff0c;如Ubuntu、CentOS、Debian等&#xff0c;每个发行版都有其独特的…