Lua探路(1):语言基础

C语言调用LUA匿名函数 这里我们考虑2种情况: 1)C语言调用LUA的命名函数 2)C语言调用LUA中的匿名函数(一般匿名函数作为C函数的入参传给C) 情况1网络上一搜一大把,这里主要介绍情况2。 首先,我们知道几种常识: 1)C与LUA通过虚拟栈实现通讯 2)LUA调用C函数,在C函数中,栈中的内容为函数的参数,匿名函数作为函数的入参,自然也在栈中。 3)C中调用LUA函数(命名or匿名),先将函数入栈,... 阅读详情

类型与值

基础类型
1. nil(空)

表示无效,

2. boolean(布尔)

true or false;lua将false和nil视为假,0和空字符串视为真,

3. number(数字)

实数,lua没有整数和浮点数之分,可以使用科学计算法、

4. string(字符串)

lua字符串是不可变值,不能直接修改字符串中的某个字符,而应该创建一个新的字符串,

a = "one string";
b = string.gsub(a, "one", "anothor");

字符串可以使用单引号或双引号;包含类型C语言的转义;多行字符串([[ “” ]]):

page = [[
<html>
<head>
</head>
</html>
]];

字符串连接:.. ,例如

print(10 .. 20);

转换字符串:tostring(10);
字符串长度:在字符串前面放置操作符“#”获取字符串长度,

print(#str)
5. userdata(自定义类型)

userdata用于表示一种由应用程序或C创建的新类型,标准IO库就用userdata表示文件的,可以将任意C数据存储到lua变量中、

6. function(函数)

可以存储在变量中,可以通过参数传递给其它函数,可以作为其它函数的返回值;lua所有的标准库都是用C写的,lua和C可以互调、

7. thread(线程)
8.table(表)

一个关联数组,“关联数组”是一种具有特殊索引方式的数组,大小可变。

lua通过table表示模块、包、对象。io.read 表示 io模块中的read函数,而对于lua这表示使用字符串“read”作为key来索引table io;

table是对象,可以看做一个“匿名对象”,lua不会暗中产生table的副本或创建新的table,仅持有一个引用;

创建空table:a = {};最简单的表达式就是“{}”;
table变量与table自身之间没有固定的关联性,属性可以自由的加入和取出;添加或修改:a[“x”] = 10; 删除:a[“x”] = nil;

--[[
a = {}
x = "y"
a[x] = 10
]]

a[“y”] 等价于 a.y;a.y表示key为y来索引table;

表示数组和线性表:用整数作为key来使用table;自动生成的索引从1开始;
数组或线性表的长度获取:“#”操作符,和字符串用法一致,Lua将nil作为界定数组结尾的标志,如果数组有中间含有nil时,操作符会认为这些nil元素就是结尾标志;
返回table的最大正索引数:table.maxn;
]]


表达式

1. 算术操作符

和其它语言基本一致。

2. 关系操作符

和其它语言唯一区别是“!=” 变成了 “~=”;table、userdata和函数都是做“引用比较”,只有当它们引用引用同一个对象时,才认为它们相等;除字符串和数字之外的其它类型只能相等或不等比较;不同类型之间大小比较直接导致错误;

3. 逻辑操作符(and,or,not)

与条件控制语句一致,所有逻辑操作符将false和nil视为假,其它任何东西视为真;操作符规则和其它语言一致;

4. 操作符优先级

“^”和“..”是右结合,其它都是左结合。

table的构造

空构造:

a = {}

构造数组:

a = {"1", "2", "3", "4", "5"}

a = {x = 10, y = 20}等价于 a = {}; a.x = 10; a.y = 20

添加属性:a.x = 1,如果table a中有key为“x”的属性,该语句为修改,如果没有就会添加“x”到table中。(有点像JavaScript那么随意)

删除属性:a.x = nil
初始化方式嵌套:

a = {name = "android", {x = 1, y = 2}, {x = 3, y = 4}}

访问:

a.name   ---> android
a["name"]    ---> android
a[1]     ---> 1

table可以在最后一个元素后面写一个逗号;可以用“;”“,”分隔元素

{x = 1,  y = 2, "x"; "y", }

语句

1. 多重赋值
a, b, c = 1, 2
x, y = y, x

若值的个数少于变量个数,那么多余的变量会被赋为nil;若值的个数更多的话,那么多余的值会被直接丢弃掉;

2. 局部变量

local修饰变量, 例:local a = 1;

3. 显示的定义一个程序块

使用关键字:do - end

do
   local a = 1
   local d = a*2
   c = a+b
end
3. 控制语句,lua不支持switch语句

if - elseif - else - end

if a>0 then
    a=1
end


if a>0 then
    a = 1
else
    a = -1
end


if a>0 then
    a = 1
elseif a == 0 then
    a = -1
else
    a = 0
end
4. while
local i = 1
while a[i] do
 print(a[i])
 i = i+1
end
5. repeat - until
repeat
 line = io.read()
until line ~= ""
local sqr = x/2
repeat
 sqr = (sqr + x/sqr)/2
 local  error = math.abs(sqr^2 - x)
until error < x/10000 --在这里还能访问循环体中的局部变量
6. for
for i=exp1,exp2,exp3 do
 print(i)
end

表示 i 从exp1变化到exp2,每次都以exp3作为步长递增,exp3可缺省则默认为1,并执行一个“执行体”。
exp1,exp2,exp3都是在循环开始前一次性求值,只会执行一次;控制变量 i 会被自动什么为for语句的局部变量,仅在循环体内可见。

7. 泛型for
for i,v in ipairs(table_name) do
 print(i,v)
end

迭代器ipairs,用于遍历数组的迭代器函数,每次在循环中,i 会被赋予一个索引值,同时 v 被赋予对应的元素值。

8. break 与 return

break:结束当前循环
return:结束当前程序块,只能放在end、else、until前一条,其它地方要么不起作用,要么报错。

function fun()
   return --这里不起作用

   do
   return --这样就可以不执行函数后面的语句,直接跳出函数了
   end

   print("hello lua")
end
Codex平台Sol指令调用Luna Max模型:环境搭建与效果验证全指南 在AI模型应用开发中,API调用与提示工程是核心技术环节。通过优化模型调用方式和指令设计,可以显著提升输出效率与质量。其技术价值在于实现单位资源内更高效的信息生成,降低开发迭代成本。典型应用场景包括代码生成、内容创作和任务自动化等。本文聚焦于Codex平台中通过Sol指令调用Luna Max模型的实践方案,涉及环境配置、连通性验证和效果评估等关键步骤,帮助开发者避开常见配置陷阱,实现稳定可靠的模型集成。 阅读详情

相关推荐

Nmap漏洞检测实战:从端口扫描到自动化漏洞验证

端口扫描是网络安全评估的基础环节,其核心原理是通过发送特定网络数据包探测目标主机开放的端口及服务信息。在渗透测试和红队评估中,端口扫描不仅是信息收集的起点,更是后续漏洞验证的关键前置步骤。Nmap作为业界标准的网络探测工具,通过其强大的脚本引擎(NSE)实现了从被动信息收集到主动漏洞检测的技术跨越。NSE脚本库提供了数百个脚本,涵盖漏洞检测、服务枚举、安全配置审计等多个类别,能够针对Apache、SMB、SSH等常见服务进行精准的漏洞验证,例如检测CVE-2021-41773、MS17-010等已知漏洞。这

cuk0051的博客 407

lua的匿名函数

lua的匿名函数.我的理解就是没有名字的函数.一般作函数传参使用.相当于一个函数指针类型的 : 如local test = {} function test:Init()    local anony_fuc = function(...)        这个时候匿名函数地址 已经 赋给了 一个 变量 , 注意.这里是 匿名函数地址。            print("打印下匿名函数")    ...

黑客小清新mua~ 1万+

开篇词:6000万会员规模下,我们是怎么做秒杀系统的

第一次自由卡促销活动,把核心交易系统打挂了。自由卡是一种虚拟预付卡,用户先充值,再用卡内余额购买商品。配合半价或大力度折扣时,对用户的吸引力非常强。活动一开始,瞬时并发请求直接把核心系统的数据库连接池打满,整个交易链路不可用。不光秒杀用户受影响,正常的下单、支付也全部阻塞。那次事故之后,CTO拍板:做一套独立的秒杀系统,和核心交易链路完全隔离。秒杀流量不管多大,不能影响正常交易。后端组建了两个技术小组:会员用户组和订单支付组,加起来十几位同学参与。前端有独立团队配合。

Sam_Deep_Thinking 897

Lua探路(2):函数

函数基础 (1)函数 格式: function fun_name(params) --body end 调用方式: o.fun(x) 或 o:fun(x) 其中冒号调用方式会隐含将o作为函数第一个参数传入; 参数:形参和实参数量可以不同,规则和多重赋值一致; 多重返回值:只需在return时这样写 return a, b, c print可以接受不同数量的实...

7-SEVENS 214

18、太空探索中的机器人:从月球到火星

本文探讨了机器人在太空探索中的关键作用,从早期的月球探测器如“游骑兵号”、“勘测者号”和“月球轨道器号”,到太阳系边缘的“旅行者号”探测器,再到火星探索的“探路者号”、“勇气号”、“机遇号”和“好奇号”漫游车。文章分析了机器人如何克服太空极端环境,执行复杂任务,并通过技术进步和公众参与推动太空科学研究。同时,还讨论了机器人太空探索面临的挑战、伦理问题以及未来发展方向,强调了机器人在人类探索宇宙过程中的不可替代性。

v6b7n8m9q0的博客 176

浏览器Cookie迁移实战:从Chrome导出导入登录态全攻略

Cookie是浏览器保存的会话凭证,服务端通过Set-Cookie将登录态种在本地。迁移Cookie本质上是把服务端认可的会话标识搬到新环境,从而免去重复输入账号密码和二次验证的麻烦。在换电脑、切浏览器或重装系统时,掌握Cookie的导出导入技术能显著提升效率。Chrome与Edge同属Chromium内核,存储结构相似,但字段差异(如Domain、SameSite、Secure)常导致迁移失败。通过浏览器扩展或CDP脚本可实现跨浏览器登录态迁移,适用于内网后台、开发环境等场景。本文从原理到实践,梳理Coo

weixin_42533120的博客 338

Lua探路(3):编译、执行、错误

编译 区分解释型语言的主要特征不是能否去编译它们,而是在编译器是否是运行时库的一部分,是否有能力执行动态生成的代码。 dofile:实际是调用loadfile,从文件加载lua代码,编译并运行,会引发错误 loadfile:从文件加载lua代码,编译但不运行(编译成函数,作为匿名函数返回),不会引发错误,有错误时只是返回错误值 源代码 foo.lua function foo(x) ...

7-SEVENS 270

UE5 GAS实战:从零构建一个MOBA英雄技能系统

本文详细介绍了如何利用UE5的Gameplay Ability System(GAS)构建MOBA英雄技能系统,涵盖核心组件如Ability System Component和GameplayEffect的使用,以及技能冷却、资源管理和连招系统等高级功能的实现。通过实战案例和代码示例,帮助开发者快速掌握GAS在MOBA游戏开发中的应用。

weixin_29012765的博客 526

Redis探路

1. 定义: Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorte

Xi's LiuY 377

SAP前台处理:业务伙伴维护(客户主数据和供应商主数据)之基础视图 <BP>

这里主要讲解BP业务伙伴主数据中和财务相关的一些内容,包括基础视图数据,采购视图数据,销售视图数据,公司代码视图数据; S4统一了供应商和客户,从事务代码上:不再使用FD01和FK01进行维护,而使用事务代码BP统一维护;

SAP.David.Gao的博客 3455

从零开始学习CANoe(六)—— CAPL 测试节点

创建CAPL Test Module的两种方式

蚂蚁小兵 1万+

A星寻路算法的Lua实现

A星寻路

zkdemon的专栏 1320

运行codex时出现登录失败:failed to start login server: 以一种访问权限不允许的方式做了一个访问套接字的尝试。 (os error 10013) 解决方案

的本质是Windows 系统端口保留策略而非代码 bug。推荐使用方案一(调整动态端口范围),一劳永逸解决。如果你安装了 Docker Desktop 或启用了 WSL2,调整端口范围后记得检查相关服务是否正常运行。

一键难忘的博客 4152

大脚插件lua错误_魔兽世界:解锁德拉诺飞行成就指南,并有宝箱插件分享

今天我们来研究一下,如何解锁6.0德拉诺飞行成就,为了艾泽拉斯的萌新。小编在很在之前有分享 2 篇关于德拉诺版本的的大概内容,一篇是基础内容,一篇详细介绍坐骑的,有兴趣的朋友可先简单看一下,结合这篇文章,应该会让你更全面的了解德拉诺。点击下方链接:魔兽世界-旧版本6.0的《德拉诺》值不值的去玩?魔兽世界-德拉诺坐骑的收集之路(休闲玩家)完成【德拉诺探路者】成就,不仅能在德拉诺飞行,而且还额外赠送一...

weixin_42333370的博客 2779

基于 ESP32 的智能药盒提醒装置设计与实现

本装置基于 ESP32 实现了智能药盒的核心功能,硬件选型兼顾成本与实用性,软件设计模块化、易拓展。后续可通过 ESP32 的 WiFi 模块接入物联网平台(如阿里云、OneNet),实现远程设置提醒、服药状态反馈等功能,进一步提升智能化水平。该装置能有效解决老人忘服药问题,具有较高的实用价值与推广潜力。

weixin_42300449的博客 1043

Manus创始人深度复盘:AI Agent产品的技术架构与战略转型

成本对比:同样任务处理,中国区单位成本是亚太区的2.3倍。付费转化率:中国区1.2% vs 全球平均4.7%微信/支付宝等超级App的适配代码占比达17%Zstandard:压缩比38%,耗时12ms。每季度需要投入3名高级工程师专职维护兼容性。国际版API平均延迟:180-220ms。中国版特殊部署延迟:480-720ms。信息保持准确率:93%(7天跨度测试)自研算法:压缩比39%,耗时5ms。存储效率:相比纯文本节省68%空间。:本地化部署导致的延迟与费用差异。LZ4:压缩比42%,耗时8ms。

m0_75253143的博客 7146

91% Token 耗在读代码上:AI 编程 Agent 成本真相与 Prewalk 实测优化

实测显示 AI 编程 Agent 91% Token 耗在读代码上,Prewalk 上下文交接模式可降本 53%。本文提供 Token 统计脚本与 Prewalk 配置片段,配合 TaoToken 统一模型入口,让轻量模型无需重复读库。官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 可创建 Key 并对照测试。

weixin_34779181的博客 7

【GEE数据库】WRF常用数据集总结

【GEE数据库】WRF常用数据集总结

WW、forever的博客 633

当太阳能板指向错误:一次软件失效的系统级验证反思

2025年2月26日,NASA发射月球轨道探测器“月球探路者”Lunar Trailblazer。这颗小卫星由美国宇航局JPL管理、加州理工学院领导,任务目标为获取月球水资源分布数据,绘制月球水资源分布图。

digi2020的博客 633

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

91% Token 耗在读代码上:AI 编程 Agent 的成本真相和优化实战 实测 Prewalk 方案最高砍掉 53% Token 成本,附开源框架适配思路

AI 编程 Agent 的 Token 开销,91% 花在了读代码、检索文件、查看日志等只读操作上,真正用于代码编辑的不到 10%。成本瓶颈不在模型生成能力,而在于反复冗余的代码读取解析。Prewalk 上下文交接方案通过优化上下文流转和模型协作逻辑,实测最高砍掉 53% Token 成本,执行速度提升 47%。

scarry2026的博客 578

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

微信API限流改造:令牌桶在Spring Boot中的生产落地

在互联网后端架构中,接口限流是保障系统稳定与第三方依赖安全的关键手段。令牌桶作为经典限流算法,以允许突发流量著称,但面对微信API这类按自然分钟窗口统计配额、超限即处罚的频控模型时,标准实现往往力不从心。理解算法原理与实际场景的错位,是设计高并发限流方案的前提。通过容量收缩、斜坡预热、日配额叠加等改造,并借助Redis Lua脚本保证令牌检查与扣减的原子性,可以在Spring Boot工程中实现一套兼顾瞬时抖动与总量控制的可落地限流器。这套方案适用于微信小程序、公众号后端、开放平台接口调用等真实业务,有效降

weixin_30582943的博客 258

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

完结篇:28篇,一套完整的秒杀系统交付给你了

提醒」:是付费专栏,但是在知识星球里是免费的。写到这里,这个专栏正式完结了。整个项目一共写了从开篇词到全链路压测,28篇文章,前后持续了几周。写的过程比我预想的累很多。不是技术本身难,而是要把一套真实的生产系统拆开来,用文字讲清楚每一个设计决策背后的原因,同时还要保证前后28篇的技术细节完全一致、互相对得上,这个工作量远超写代码本身。有些章节反复改了三四遍。不是因为技术方案有问题,而是写出来之后发现读者如果没看过前面的某一篇,这段话就会看不懂。

Sam_Deep_Thinking 496

C#限流中间件:一次请求配额为何少2?完整排查与根治方案

限流中间件是保障API网关高可用与服务稳定的基础组件,核心原理是通过计数器控制单位时间内的请求速率。实际工程中,很多开发者会遇到“单次请求配额扣减了两次”的异常,原因往往不是步长配置错误,而是浏览器预检请求(OPTIONS)未放行、中间件重复注册或扣减逻辑挂在响应生命周期上。正确排查方式是通过TraceIdentifier对齐客户端与服务端请求轨迹,区分业务请求与预检请求。理解固定窗口计数与并发原子操作后,可设计一个真正只扣一次的C#限流中间件,结合Redis实现分布式场景下的全局配额控制。文章从常见现象出

weixin_32430941的博客 314

BUG修复项目测评! DeepSeek V4 Flash、GLM-5.2、GPT-5.6 Luna哪个强?

B站"屎山论剑"挑战赛实测三大AI模型(DeepSeek V4 Flash、GLM-5.2、GPT-5.6 Luna)修复复杂代码Bug的能力。比赛设置青铜(版本号比较)、白银(数据耦合)、黄金(缓存切面)、钻石(缓存业务叠加)四关。最终比分4:3:3,V4 Flash险胜:GLM-5.2速度最快(钻石关2分23秒),但V4 Flash关键时刻更准(黄金关直接得2分);Luna复杂任务耗时过长(钻石关改2小时未果)。策略差异明显:GLM善用子代理探路,V4亲力亲为反复验证,Luna靠多线程"体力"攻坚

2601_96073073的博客 609

ESP8266 Non-OS SDK 开发之旅 基础篇① 初识 Non-OS SDK,史上超级详细手把手教小白20分钟快速搭建SDK软件开发环境,完成第一个例子Hello World!

文章目录1.前言2. SDK使用流程3. Non-OS SDK4. 软件环境搭建 授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力。希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石。。。 共同学习成长QQ群 622368884,不喜勿加,里面有一大群志同道合的探路人 快速导航 单片机菜鸟的博客快速索引(快速找到你要的) 如果觉得有用,麻烦点...

单片机菜鸟哥的博客 1万+

大厂AI安全体系拆解:智能体安全网关与API防护的工程实践

AI安全体系的核心在于构建可落地的防护机制,而非追求零信任等复杂架构。其基本原理是通过安全网关在请求入口实施输入过滤、频率控制与权限校验,结合API密钥管理和调用链监控,形成分层防御。这种工程化思路能有效降低智能体被提示词注入、越权操作和API滥用的风险,适用于客服、销售等AI应用场景。大厂实践表明,将安全能力从业务代码中抽离为独立网关层,并遵循最小权限原则配置智能体工具调用,是中小团队可复用的关键路径。

weixin_30952479的博客 333
上一篇: Cocos 游戏开发辅助工具收集
下一篇: Lua探路(2):函数
7-sevens
博客等级 码龄10年 259粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值