标签: lua

用于Lua Web开发的Web服务器

我应该使用什么Web服务器(以及为什么)进行Lua Web开发?

apache lua webserver lighttpd nginx

34
推荐指数
4
解决办法
2万
查看次数

按相对路径加载Lua文件

如果我有这样的文件结构:

./main.lua
./mylib/mylib.lua
./mylib/mylib-utils.lua
./mylib/mylib-helpers.lua
./mylib/mylib-other-stuff.lua
Run Code Online (Sandbox Code Playgroud)

main.lua文件mylib.lua中可以加载完整路径require('mylib.mylib').但在内部mylib.lua我还想加载其他必要的模块,我不想总是指定完整的路径(例如mylib.mylib-utils).如果我决定移动文件夹,我将有很多搜索和替换.有没有办法只使用路径的相对部分?

UPD.我正在使用Lua和Corona SDK,如果这很重要的话.

lua require coronasdk

34
推荐指数
2
解决办法
5万
查看次数

Lua os.execute返回值

是否可以从Lua中的局部变量中读取以下内容?

local t = os.execute("echo 'test'")
print(t)
Run Code Online (Sandbox Code Playgroud)

我只是想实现这一点:无论通过什么执行ox.execute并将返回任何值,我想在Lua中使用它 - 例如echo 'test'test在bash命令行中输出- 是否可以获得返回值(test在这种情况下)到Lua局部变量?

lua shellexecute

34
推荐指数
1
解决办法
7万
查看次数

Lua协同程序甚至适用于什么?为什么这段代码不像我期望的那样工作?

我无法理解这段代码......我期待类似于线程的东西,我会得到一个输出随机的"nooo"和"yaaaay"互相穿插,因为它们都是异步打印,而是我发现主线程似乎阻止第一次调用coroutine.resume(),从而防止下一个被启动,直到第一个产生.

如果这是预期的操作协同程序,它们有什么用处,我将如何实现我希望的目标?我是否必须为这些协同程序实现我自己的调度程序才能异步操作?因为这看起来很混乱,我也可以使用函数!

co1 = coroutine.create(function ()
        local i = 1
        while i < 200 do
                print("nooo")
                i = i + 1
        end
        coroutine.yield()
end)

co2 = coroutine.create(function ()
        local i = 1
        while i < 200 do
                print("yaaaay")
                i = i + 1
        end
        coroutine.yield()
end)

coroutine.resume(co1)
coroutine.resume(co2)
Run Code Online (Sandbox Code Playgroud)

lua multithreading coroutine

33
推荐指数
3
解决办法
2万
查看次数

Lua打印在同一行

在Pascal,我有writewriteln.显然,Lua printwritelnPascal 类似.我们有类似writePascal的东西吗?连续打印命令如何将其输出发送到同一行?

print("Hello")
print("World")
Run Code Online (Sandbox Code Playgroud)

输出:

Hello
world
Run Code Online (Sandbox Code Playgroud)

我想要这个:

Hello world
Run Code Online (Sandbox Code Playgroud)

lua

33
推荐指数
4
解决办法
5万
查看次数

lua:检索表中的键列表

我需要知道如何在lua中检索表的键集.例如,如果我有下表:

tab = {}
tab[1]='a'
tab[2]='b'
tab[5]='e'
Run Code Online (Sandbox Code Playgroud)

我想要检索一个如下所示的表:

keyset = {1,2,5}
Run Code Online (Sandbox Code Playgroud)

lua keyset lua-table

33
推荐指数
2
解决办法
5万
查看次数

检查Lua中的字符串是否为空或空

我目前使用以下语法编写了一些Lua代码:

if (foo == nil or foo == '') then
    foo = "some default value"
end
Run Code Online (Sandbox Code Playgroud)

if条件的目标是测试foo既不是空字符串,也不是nil值.

如果测试而不是两个,这个代码可以简化为一个吗?

string lua

33
推荐指数
2
解决办法
10万
查看次数

如何附加到Lua中的表中

我试图找出相当于:

foo = []
foo << "bar"
foo << "baz"
Run Code Online (Sandbox Code Playgroud)

我不想提出递增索引.是否有捷径可寻?

lua lua-table

33
推荐指数
3
解决办法
6万
查看次数

如何使用布尔变量格式化lua字符串?

我有一个布尔变量,其值我想在格式化的字符串中显示.我尝试使用string.format,但是对于语言参考中列出的任何格式选项选项,可以获得以下内容:

Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio
> print(string.format("%c\n", true))
stdin:1: bad argument #2 to 'format' (number expected, got boolean)
stack traceback:
    [C]: in function 'format'
    stdin:1: in main chunk
    [C]: ?
Run Code Online (Sandbox Code Playgroud)

我可以得到布尔通过增加显示tostring,

> print(string.format("%s\n", tostring(true)))
true
Run Code Online (Sandbox Code Playgroud)

但对于这个lua初学者来说,这似乎是间接的.有没有我忽略的格式化选项?或者我应该使用上述方法?别的什么?

lua string-formatting

32
推荐指数
3
解决办法
7万
查看次数

跨平台/编译器一致的浮点数sprintf

我们有一个需要确定性的游戏,因为它是多人游戏模型的一部分.我们还使用Lua,它在sprintf内部使用(格式为%.14g).

打印数字如0.00001时会出现问题.在某些情况下,它会打印1e-05,在某些情况下,它会打印1e-005(额外为零).

例如,当使用Visual Studio 2015进行编译时,它会进行打印1e-005,并使用Visual Studio 2013进行打印1e-05.我尝试了不同的区域设置,但似乎没有任何效果.

问题是:实现确定性结果的最佳解决方案什么? 我不关心科学记谱法是否标准化或消除.

我想到的解决方案:

  • 当我使用%f符号时,它不会忽略无关紧要的零,因此%.14f会导致不切实际的长数.
  • 使用自定义sprintf方法(从某些标准库粘贴的副本)
  • 使用一些我没想过的特殊格式(我只使用它作为参考:http://www.cplusplus.com/reference/cstdio/printf/)

c++ lua printf string-formatting

32
推荐指数
2
解决办法
4301
查看次数