问题标签 [lua-5.1]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
122 浏览

module - 用函数编写一个合适的 Lua 5.1 模块

我正在使用一个嵌入了标准 Lua 5.1 的程序,并且正在尝试编写一个可以从中调用函数但无济于事的模块。

当前环境非常挑剔,如果我犯了错误,脚本会中断但不会出现任何错误,所以我们开始吧:

我有这样的东西(在moduletests.lua中):

然后我会尝试要求这个并调用它:

通常,如果 require 函数不正确,脚本会中断。这些脚本可以很好地满足要求,所以我认为它是正确的,但是在任何尝试调用 print 函数时它都会中断。

另一方面,我安装了另一个 lua 模块,并且能够成功地要求它并调用一个函数,这就是我为我的模块建模的内容。这是模块的代码

这是我使用它的方式:

这工作得很好,完全符合预期。有人可以告诉我我的模块有什么不同或错误,或者对我如何制作更好的功能版本有任何建议吗?

谢谢大家,我衷心感谢您的帮助!非常感激!

0 投票
2 回答
2328 浏览

lua - 将 luasocket 添加到自带 lua 环境的程序 (bizhawk)

我试图让 luasocket 在 Bizhawk 的 lua 脚本环境中工作,但到目前为止还没有运气。我在这里下载了 luasocket 的 vc8 版本,确保我已经安装了 vc8,并检查了 bizhawk 附带的 lua 版本:5.1

但是,当我启动脚本时,出现以下错误:

lua代码:

文件系统结构:

它似乎找到了文件,因为当我的文件结构错误时,它给了我实际的文件未找到错误。我最好的猜测是 Bizhawk 附带的 lua 与外部 luasocket 库二进制文件之间存在某种不兼容,但我没有想法。

0 投票
1 回答
574 浏览

lua - 元表没有索引,即使使用了 setmetatable

根据 Lua 手册,setmetatable 的工作方式仍然与 Lua 5.0 相同。然而由于某种原因,当我在 Lua 5.1.5 和 5.3.1 中尝试此代码时,似乎未访问元表:

第一种情况有效,但是在第二种情况下,我收到错误提示未使用元表:

这也与方法调用运算符“:”无关,因为即使获取方法的值也不会转到元表。

0 投票
2 回答
1907 浏览

lua - 如何在lua中初始化表大小

将数字转换为表格的最有效方法是什么?或者是否可以制作没有循环的表格?

更新:t变量是可变数字,我想为每个值。

我需要一种new Array(n)在 Lua 中最快的方式。还是没有任何意义?

0 投票
2 回答
995 浏览

lua - 处理 lua 文件路径中的特殊字符(变音符号)

我有一个小 lua 函数来检查文件是否存在

false但是,当文件路径包含特殊字符(例如德语变音符号 (äöü))时,这将始终返回。有没有办法解决?

非常感谢!

0 投票
1 回答
3126 浏览

lua-5.1 - How to create table in table in Lua 5.1 using C-API?

I need to create construction like this in Lua 5.1 C-API, not in Lua 5.2 and above

Expected Result: GOOD

Thanks for answers!

0 投票
1 回答
141 浏览

lua - Lua沙箱加载许多脚本

我想制作一个可以定期加载脚本的包装器,但是在加载另一个之前删除以前的脚本数据,加载的脚本应该可以访问所有全局函数,除了一些函数,比如“打印”,它还应该修改一些函数行为。目前我有这个代码:

当我想加载一个新脚本时,我调用这两个函数,这段代码有什么问题,因为它没有按预期工作。

0 投票
1 回答
526 浏览

visual-c++ - Lua5.1 LuaSockets Win 64bit C++的“找不到指定的过程”

我正在尝试使 ZBS 在 Windows 中工作,将 Lua 5.1 和 luasockets 编译为 64 位 C++ 源。我收到以下错误:

从文件“socket\core.dll”加载模块“socket.core”时出错:找不到指定的过程。

对此有任何想法或暗示吗?

提前致谢,

0 投票
2 回答
760 浏览

json - 解析大于内存的 JSON 字符串

我正在使用的平台具有非常严格的内存限制,我正在尝试找到一种方法来解析大型 JSON 字符串,而无需将最多几百个字节加载到内存中。JSON 字符串存储在更大芯片(闪存)上的文件中。

有两件事我真的找不到一个好的解决方案:

  1. 通过指定“路径”来访问某个值,例如foo["bar"][2].
    (如果结果是一个数组/对象,那么我们应该只返回它是一个数组/对象的事实,也可能它是否为空。)
  2. 遍历 JSON 中的任何对象/数组。

所以基本上我需要在调用时逐步解析 json 并且只保存我们实际需要继续解析的部分的函数。

对于界面,我认为不可能有类似的东西exampleJson["aa"].2.["gg],但我设法非常接近:exampleJson["aa"].2.["gg"](). 这将导致调用一个函数,然后该函数可以轻松访问 {'aa',2,'gg'} 并从文件中读取/解析 json。

到目前为止,这是我的代码,但我真的不知道如何继续:
https ://repl.it/HfwS/2

0 投票
3 回答
1879 浏览

lua - 我可以使用 Lua 的 require 来设置调用文件的环境吗?

有没有办法调用requireLua 文件,并让模块设置调用它的文件的环境?例如,如果我有一个定义函数RootSequence在表中定义的 DSL(域特定语言),我是否可以setfenv(1, dslEnv)在模块中有类似的东西允许我像全局变量一样访问这些函数?

我想到的目标是使用行为树 DSL,使我的定义文件看起来像这样(或尽可能接近):

不必明确地将Root,Sequence和 和Leaf明确地纳入范围,也不必对 . 之类的名称进行限定behaviortrees.Sequence

简而言之,我试图使定义文件尽可能干净,没有任何多余的行使树定义混乱。