当我看到Lua的时候,我所读过的唯一的东西就是“embedded”,“快速”,“轻量级”,比“魔兽世界”或者简称“魔兽世界”更经常。 为什么它仅限于将整个事物embedded到另一个应用程序中? 为什么不像使用Python或Perl那样编写通用脚本? Lua似乎在速度和内存使用(最快的脚本语言afaik)方面做得很好,为什么我从来没有看到Lua被用作“桌面脚本语言”来自动执行任务? 例如: 重命名一堆文件 从网上下载一些文件 Webscraping 缺乏标准库吗?
在Lua编码,我有一个三重嵌套的循环,经历了6000次迭代。 所有的6000次迭代都是独立的,并且可以很容易地被并行化。 哪些线程包Lua 编译出来,并获得体面的并行加速四个或更多的核心? 以下是我所知道的: luaproc来自核心Lua团队,但luaforge上的软件包已经陈旧了,邮件列表中有报告。 另外,对于我来说,如何使用标量消息传递模型最终将结果导入到父线程中并不明显。 Lua Lanes提出有趣的说法,但似乎是一个重量级的,复杂的解决scheme。 邮件列表上的许多消息报告让Lua Lanes构build或为其工作带来麻烦。 我自己也难以得到潜在的“Lua岩石”分配机制为我工作。 LuaThread需要显式locking,并要求线程之间的通信由受锁保护的全局variables调解。 我可以想象得更糟,但我会更高兴地抽象。 并发Lua提供了一个类似于Erlang的有吸引力的消息传递模型,但它表示进程不共享内存。 目前还不清楚spawn实际上是否适用于任何 Lua函数或是否有限制。 Russ Cox提出了一个偶尔的只适用于C线程的线程模型。 对我没有用处。 我将upvote所有报告的实际经验与这些或任何其他multithreading包,或任何答案,提供新的信息。 作为参考,这里是我想并行化的循环: for tid, tests in pairs(tests) do local results = { } matrix[tid] = results for i, test in pairs(tests) do if test.valid then results[i] = { } local results = results[i] for sid, […]
关于Lua和Javascript是否支持对象能力模型, 在cap-talk邮件列表上有一些讨论 ,结论是由于支持通过setfenv将环境限制为被调用的函数,以及不可伪造的引用不可变对象的可能性, OCM可以实施。 我们有没有看到这是如何工作的? 我很感兴趣的是从现有的应用程序中删除漏洞利用非常有用,慷慨的脚本支持在Lua,不幸的是允许在各种情况下完全shell访问。 需要一些shell访问权限:对象能力模型似乎是一种pipe理事物的好方法。 但是我担心我可以做出多less有说服力的事实,这种方法实际上在可靠的混乱实践中是可validation的。 一些链接: 较老的问题: 我如何创build一个安全的Lua沙箱? erights.org的背景: 从对象到function Lua wiki: SandBoxes和ReadOnlyTables – 显示setfenv的行动; 显示了在正确的情况下可以只读的表格的基本思想
当我在Lua中执行“os.execute”时,控制台很快popup,执行命令,然后closures。 但有没有办法找回只使用标准的Lua库的控制台输出?
我的目录结构如下所示: |– ball.lua |– entity.lua |– test `– ball_test.lua 我在test / ball_test.lua中使用以下代码来要求父目录中的ball.lua: package.path = package.path .. ";../entity.lua" require("entity") package.path = package.path .. ";../ball.lua" require("ball") entity.lua是ball.lua的一个依赖项。 所以我需要(“实体”),否则我得到一个模块“entity.lua”没有发现错误。 这似乎是一个黑客,有什么更好的方法来做到这一点?
myTable = {} myTable["foo"] = 12 myTable["bar"] = "blah" print(#myTable) — this prints 0 我实际上是否必须遍历表中的项目来获取密钥的数量? numItems = 0 for k,v in pairs(myTable) do numItems = numItems + 1 end print(numItems) — this prints 2
如果我有这样的项目列表: local items = { "apple", "orange", "pear", "banana" } 如何检查“橙色”是否在这个列表中? 在Python中,我可以这样做: if "orange" in items: # do something Lua有没有相同的function?
我一直在尝试使用Corona SDK的Facebook API在Facebook上开发的游戏上发布评分。 但是,我遇到了问题。 我第一次尝试发布到Facebook,login和用户authentication后出现这个错误: NSURLErrorDomain错误代码-999 然后,它不会在Facebook上发布。 这个错误有什么可能的原因,我该如何解决? 我试图search网页,但无法find关于它的信息。 提前致谢。 顺便说一下,我没有在我的应用程序上使用webview。 只是在我的Facebook类的小部件api和show_dialog监听器。
根据计算机语言基准游戏,LuaJIT实现似乎击败了所有其他JITdynamic语言 (V8,Tracemonkey,PLT Scheme,Erlang HIPE) 一个数量级 。 我知道这些基准testing并不具有代表性(正如他们所说:“哪种编程语言实现了速度最快的基准testing程序?”),但这仍然非常令人印象深刻。 实际上,情况真的如此吗? 有人testing过Lua的实现吗?
我知道Love2D和Corona SDK (用于移动设备)。 有没有其他的游戏引擎使用你推荐的Lua?