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

Lua 学习

参照

注释

 --  这是单行注释
 --[[这是多行注释--]]

if语句

if true thenprint(true)
end

if else语句

nil是false

if nil thenprint("nil被当作true处理")
elseprint("nil被当作false处理")
end

运算符

% 取余
^ 乘幂 A=10,A^2=100
// 整除运算符(>=lua5.3)

~= 不等于
and 与
or 或
not 逻辑非 A=true,B=false -》 not(A and B) 则为true

字符串

单行

string1 = "this is string1"
string2 = 'this is string2'

字符串多行
2 个方括号 “[[]]” 来表示"一块"字符串

html = [[
<html>
<head></head>
<body><a href="http://www.runoob.com/">菜鸟教程</a>
</body>
</html>
]]

字符串连接使用…,而不是+,+在lua里是运算符

print("2".."6")    --输出为26
print("2"+"6")    --输出为8  +号会尝试将字符串转为number再进行运算
print("2"+"6a")    --输出会报异常

使用 # 来计算字符串的长度,放在字符串前面

len = "www.runoob.com"
print(#len)  --输出为14
print(#"siki学院") --输出为8  一个中文字符占两个长度 

循环 while

while(true)
doprint("循环将永远执行下去")
end

表 table

1.类似c#的字典用法

tab1={} --空表  {}构造表达式
print(tab1)  --table:00A89600   输出的是存储地址
print(tab1.key1)  --niltab2={key1=100,key2=“value2”} --初始化一张表 
print(tab2.key1) --100
print(tab2["key1"]) --100--table的数据添加  table不会固定长度大小
tab1.key1="www.sikiedu.com"
tab1["key2"]="siki"
tab1[10]=1000print(tab1["key1"]) --输出www.sikiedu.com
print(tab1.key1) --输出www.sikiedu.com
print(tab1.key2) --输出siki
print(tan1[10]) --输出1000

2.类型c#的数组写法
lua使用索引的地方是从1开始,而不是0

tab3={"apple","pear","orange","grape"} --默认key为1,2,3,4
print(tab3[2])  --输出pear lua的索引从1开始,而不是0

函数 function

c#里的函数(阶乘)

int fact(int n){if(n==1)return n;elsereturn n*fact(n-1);
}

lua函数写法 function开始,end结束

function fact(n)if n==1return n;elsereturn n*fact(n-1);end
endprint(fact(3)); --输出6
fact2=fact; --把函数fact赋给fact2
print(fact2(3)); --输出6

把函数作为参数传递(类似c#的委托,但lua没有委托)

function testFun(tab fun)for k,v in pairs(tab) dofun(k,v)end
endtab={key1="val1",key2="val2"}function f1(k,v)print(k..":"..v)
endtestFun(tab,f1)  --输出 key1:val1  key2:val2function f2(k,v)print(k.." "..v)
endtestFun(tab,f2) --输出 key1 val1    key2 val2--匿名函数 (不用写函数名)
--输出 key1-val1   key2-val2
testFun(tab,
function (k,v)print(k.."-"..v)
end
)

相关文章:

Lua 学习

参照 注释 -- 这是单行注释--[[这是多行注释--]]if语句 if true thenprint(true) endif else语句 nil是false if nil thenprint("nil被当作true处理") elseprint("nil被当作false处理") end运算符 % 取余 ^ 乘幂 A10,A^2100 // 整除运算符&#xff0…...

YOLOv7 | 添加GSConv,VoVGSCSP等多种卷积,有效提升目标检测效果,代码改进(超详细)

⭐欢迎大家订阅我的专栏一起学习⭐ &#x1f680;&#x1f680;&#x1f680;订阅专栏&#xff0c;更新及时查看不迷路&#x1f680;&#x1f680;&#x1f680; YOLOv5涨点专栏&#xff1a;http://t.csdnimg.cn/QdCj6 YOLOv7专栏&#xff1a; http://t.csdnimg.cn/dy…...

『运维心得』BPC-EPM-AddIn专家看过来

目录 系统版本问题 安装顺序问题 framework问题 vstor_redis问题 dll问题 一个小彩蛋 总结 最近在搞BPC&#xff0c;安装Office所需的EPM-AddIn的过程中&#xff0c;碰到了一些奇怪的问题。 查了BPC专家提供的安装说明文档&#xff0c;文档里要么没有提到我们碰到的问题…...

论文浅尝 | GPT-RE:基于大语言模型针对关系抽取的上下文学习

笔记整理&#xff1a;张廉臣&#xff0c;东南大学硕士&#xff0c;研究方向为自然语言处理、信息抽取 链接&#xff1a;https://arxiv.org/pdf/2305.02105.pdf 1、动机 在很多自然语言处理任务中&#xff0c;上下文学习的性能已经媲美甚至超过了全资源微调的方法。但是&#xf…...

Rust语言:告诉编译器允许存在未使用的代码(Rust保留未使用的实现)

Rust告诉编译器允许存在未使用的代码(Rust保留未使用的实现) Rust的Lint工具clippy clippy是一个Rust的Lint工具&#xff0c;旨在帮助开发者发现并改进代码中的潜在问题。它提供了许多静态代码分析的规则和建议&#xff0c;以提高代码质量和可读性。其中就包括检查未使用的代…...

Winform数据绑定

简介# 在C#中提起控件绑定数据&#xff0c;大部分人首先想到的是WPF&#xff0c;其实Winform也支持控件和数据的绑定。 Winform中的数据绑定按控件类型可以分为以下几种&#xff1a; 简单控件绑定列表控件绑定表格控件绑定 绑定基类# 绑定数据类必须实现INotifyPropertyChanged…...

DeprecationWarning: currentThread() is deprecated, use current_thread() instead

解决方案&#xff1a; # auto_commit not getattr(threading.currentThread(), testing, False) #阙辉注释 auto_commit not getattr(threading.current_thread(), testing, False) #阙辉新增...

2024届 C++ 刷题 笔试强训 Day 03

选择题 01 以下程序的输出结果是&#xff08;&#xff09; #include <stdio.h> void main() {char a[10] {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, *p;int i;i 8;p a i;printf("%s\n", p - 3); }A 6 B 6789 C ‘6’ D 789 题目解析&#xff1a; 题目中定义了一个…...

linux用git拉取我云端以及git处理冲突

拉取后切换一个跟云端分支(dev)一样的 git branch --set-upstream-toorigin/dev dev 之后就同步了 A在dev分支写了iii,提交 B在dev分支写了hhh,提交,冲突 怎么修改,B把云端的拉下来,随便改改就行...

Learn OpenGL 17 立方体贴图

立方体贴图 我们已经使用2D纹理很长时间了&#xff0c;但除此之外仍有更多的纹理类型等着我们探索。在本节中&#xff0c;我们将讨论的是将多个纹理组合起来映射到一张纹理上的一种纹理类型&#xff1a;立方体贴图(Cube Map)。 简单来说&#xff0c;立方体贴图就是一个包含了…...

【四 (6)数据可视化之 Grafana安装、页面介绍、图表配置】

目录 文章导航一、Grafana介绍[✨ 特性]二、安装和配置1、安装2、权限配置&#xff08;账户/团队/用户&#xff09;①用户管理②团队管理③账户管理④看板权限 3、首选项配置4、插件管理①数据源插件②图表插件③应用插件④插件安装方式一⑤安装方式二 三、数据源管理1、添加数…...

jvm 堆

Java虚拟机&#xff08;JVM&#xff09;中的堆是运行时数据区的一个主要部分&#xff0c;它用于存放对象实例和数组。它是所有Java线程共享的一块内存区域&#xff0c;是垃圾收集器管理的主要区域&#xff0c;因此也被称作垃圾收集堆&#xff08;Garbage-Collected Heap&#x…...

Jenkins通知目标服务器拉取Harbor镜像部署

1.告诉目标服务器拉取哪个镜像 2.判断当前有没有正在运行此容器&#xff0c;有就删除 3.接着查看拉取的镜像目标服务器上是否已存在&#xff0c;有就删除 4.拉取Harbor镜像 5.运行容器 目标服务器编写脚本 创建个部署脚本 vim deploy.sh告诉目标服务器Harbor地址、仓库、镜像…...

Android 13.0 系统中framework中关于Activitity的生命周期的源码讲解

1.前言 在13.0的系统rom定制化开发中,在framework中对activitity的生命周期的掌握和了解也是非常重要的,这样有利于在启动某个app的activity的页面的时候,可以 监听到是在启动 resume stop的过程,也好进行相关的功能开发,接下来就分析下Activity的相关生命周期的代码 2.…...

常见的几个Python技术难题

大家在日常开发中有没有遇到一些难题呢&#xff1f;计划后面出几期专题针对性的解决。大家如果有其它问题可以在评论区给出哈。 以下是几个Python技术难题的例子&#xff1a; 并发和多线程编程&#xff1a;Python的全局解释器锁&#xff08;GIL&#xff09;限制了多线程的并行…...

【探索Linux】—— 强大的命令行工具 P.28(网络编程套接字 —— 简单的UDP网络程序模拟实现)

阅读导航 引言一、UDP协议二、UDP网络程序模拟实现1. 预备代码⭕makefile文件⭕打印日志文件⭕打开指定的终端设备文件&#xff0c;并将其作为标准错误输出的目标文件描述符 2. UDP 服务器端实现&#xff08;UdpServer.hpp&#xff09;3. UDP 客户端实现&#xff08;main函数&a…...

【MATLAB源码-第165期】基于matlab的科莫多巨蜥算法(KMA)机器人栅格路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 科莫多巨蜥算法&#xff08;Komodo Mlipir Algorithm&#xff0c;简称KMA&#xff09;是一种受到印尼科莫多岛上独特生物——科莫多巨蜥启发的创新算法。尽管这个算法的名称听起来很有趣&#xff0c;但实际上它并不是一个公认…...

【Linux】项目部署CPU彪高如何定位

1.查看所有CPU占比 使用top指令获取彪高进程的PID 2.输出进程的信息 ps H -eo pid,tid,%cpu | grep 1313 3.查看线程的信息 jstack tid nid都是十六进制的 4.进制转换 将 tid的十进制转为十六进制 找到nid 可以定位到具体位置 5.关闭程序 ps -ef | grep java kill -9 jav…...

第十二届蓝桥杯大赛软件赛决赛C/C++ 研究生组-纯质数

直接判断数据过大 相对而言&#xff0c;由2&#xff0c;3&#xff0c;5&#xff0c;7组成的数更少&#xff0c;则先筛选出由2,3,5,7组成的数&#xff0c;再判断这些数中的质数个数即可 #include <iostream> using namespace std; int main() {printf("1903");…...

MyBatis面试简答题

以下是一份MyBatis的高难度简答题,共20题: 请解释MyBatis中#{}和${}的区别,并举例说明它们在实际应用中的使用场景。 MyBatis的Mapper接口是如何与XML映射文件关联的? 如何在MyBatis中实现动态SQL?请列举几种常见的动态SQL元素并解释其作用。 描述MyBatis中的ResultMap的作…...

FairyGUI遮罩与滚动视图实战:从UI组件溢出处理到流畅列表的实现(Unity 2022)

FairyGUI遮罩与滚动视图实战&#xff1a;从UI组件溢出处理到流畅列表的实现&#xff08;Unity 2022&#xff09; 在Unity游戏开发中&#xff0c;UI系统的灵活性和性能往往是决定用户体验的关键因素。FairyGUI作为一款强大的UI解决方案&#xff0c;其设计哲学和实现机制为开发者…...

从防御视角看upload-labs:为什么现代PHP版本已修复00截断?给开发者的安全编码启示

从防御视角看upload-labs&#xff1a;为什么现代PHP版本已修复00截断&#xff1f;给开发者的安全编码启示 在Web应用开发中&#xff0c;文件上传功能几乎是每个系统必备的基础模块&#xff0c;但同时也是安全风险的高发区。upload-labs靶场作为经典的漏洞实验环境&#xff0c;其…...

多设备键鼠共享的终极解决方案:告别物理切换的烦恼

多设备键鼠共享的终极解决方案&#xff1a;告别物理切换的烦恼 【免费下载链接】barrier Open-source KVM software 项目地址: https://gitcode.com/gh_mirrors/ba/barrier 在现代数字工作环境中&#xff0c;技术从业者经常面临一个普遍且低效的场景&#xff1a;桌面上摆…...

DayZ社区离线模组:如何打造完全掌控的单机生存体验?

DayZ社区离线模组&#xff1a;如何打造完全掌控的单机生存体验&#xff1f; 【免费下载链接】DayZCommunityOfflineMode A community made offline mod for DayZ Standalone 项目地址: https://gitcode.com/gh_mirrors/da/DayZCommunityOfflineMode 厌倦了网络延迟、服务…...

图解最小生成树与启发式合并:如何高效求解图上任意两点间的“次优”路径?

图解最小生成树与启发式合并&#xff1a;如何高效求解图上任意两点间的“次优”路径&#xff1f; 想象你正在规划城市间的物流网络——如何在保证主干道高效的同时&#xff0c;为每两个城市预留一条备用路线&#xff1f;这个问题在图论中对应着次优路径搜索。我们将用最小生成树…...

Java 深度解析:for 循环 vs Stream.forEach 及性能优化指南

一、基础概念与语法对比1.1 传统 for 循环Java 提供了三种主要的传统循环结构&#xff1a;// 1. 索引 for 循环&#xff08;最高性能&#xff09; for (int i 0; i < list.size(); i) {String item list.get(i);System.out.println(item); }// 2. 增强 for 循环&#xff0…...

Tkinter Helper终极指南:10分钟学会Python可视化GUI开发

Tkinter Helper终极指南&#xff1a;10分钟学会Python可视化GUI开发 【免费下载链接】tkinter-helper 为tkinter打造的可视化拖拽布局界面设计小工具 项目地址: https://gitcode.com/gh_mirrors/tk/tkinter-helper 还在为Python GUI开发头疼吗&#xff1f;Tkinter Helpe…...

PyTorch-2.x-Universal-Dev-v1.0:5分钟搞定深度学习环境,学生竞赛必备

PyTorch-2.x-Universal-Dev-v1.0&#xff1a;5分钟搞定深度学习环境&#xff0c;学生竞赛必备 1. 为什么你需要这个开发环境 1.1 学生竞赛中的常见痛点 参加过AI竞赛的同学都深有体会&#xff0c;最耗时的往往不是算法设计&#xff0c;而是环境配置。我曾经指导过多个参赛团…...

CIC滤波器设计避坑指南:如何平衡通带衰减与旁瓣抑制?

CIC滤波器设计避坑指南&#xff1a;如何平衡通带衰减与旁瓣抑制&#xff1f; 在数字信号处理领域&#xff0c;CIC&#xff08;Cascaded Integrator Comb&#xff09;滤波器因其结构简单、无需乘法器、适合高速处理等优势&#xff0c;已成为多速率信号处理系统的首选方案。然而&…...

从WKS文件看Yocto镜像构建:深度解析i.MX平台Bootloader与分区布局的自动化配置

从WKS文件看Yocto镜像构建&#xff1a;深度解析i.MX平台Bootloader与分区布局的自动化配置 在嵌入式Linux开发领域&#xff0c;Yocto项目已经成为构建定制化Linux发行版的事实标准工具链。对于使用NXP i.MX系列处理器的开发者而言&#xff0c;如何高效地配置启动流程和存储分区…...