我很兴奋地得知,从Lua5.4开始,Lua支持常量(const)和待关闭(close)变量!然而,在测试这些关键字时,他们似乎什么也不做。我编写了以下代码来对这些特性进行示例,以便更好地掌握它们的确切用法:
function f()
local const x = 3
print(x)
x = 2
print(x)
end
f()
function g()
local close x = {}
setmetatable(x, {__close = function() print("closed!") end})
end
g()
我给文件命名为co
我很难找到并理解如何将一个表从lua传递到c++
我所拥有的:
Lua档案:
-- lua script for sending table data
io.write("lua table to send")
tableexample = {x = 1, y = 2, z = 100}
return tableexample
c/c++侧
L = lua_open();
luaL_openfile(L, "luafile");
... call the function...
luaLdofile(L, luafile);
int result;
result
我想知道如何用多个分隔符拆分字符串。如果一个是空间,我有分裂的问题吗?
我试图读取一个具有以下内容的文本文件:
22.0;2016-01-16 00:16:18
我知道如何将文本文件读取到变量,但当我遇到拆分字符串的问题时,我就不能再继续下去了。
我现在只有这段代码:
with open('datasource_3.txt', 'r') as f:
data = f.readlines()
for line in data:
words = line.strip().split(';')
pr
我已经采用了来解析JSON。解析调用看起来是这样的:
-- file.lua
local res = json.decode.decode(json_str)
if res == nil then
throw('invalid JSON')
end
...
但是,如果json_str格式不好,decode()将在LuaJSON中停止,并中断file.lua的执行。我希望控制流返回到我的函数,所以我可以提供一个自定义错误通知。
我已经浏览了LuaJSON API,并且没有类似回调的错误处理。我想知道是否有任何Lua机制允许我从LuaJSON内部处理file.lua中发生的
下面的片段
local function foo ()
print('inside foo')
bar()
end
local function bar ()
print('inside bar')
end
foo()
结果如下所示
inside foo
lua: teste.lua:3: attempt to call global 'bar' (a nil value)
stack traceback:
teste.lua:3: in function 'foo'
t
我正在为iOS和OSX在Lua开发一个roguelike。Lua对Lua来说是个新手,我惊愕地发现,在我的平台上,math.random是多么的非随机。我已经通过一个函数设置了对随机数的调用:
function rollD(max)
return math.random(max)
end
因此,我找到了一个非常棒的答案来回应,我认为这将解决我的问题(对于一个流氓来说,每次游戏都不同是非常关键的),但是为了使功能得到以下的调整:
function rollD(max)
return srandom(seedobj,1,max)
end
工作中,我不得不:
local seedobj
我想用空格将一个字符串拆分成3个元素,但我不希望将带引号的子串拆分(它们也可以包含反斜杠以转义引号)。
例如:
"command argument other arguments and options"
>> ['command', 'argument', 'other arguments and options']
'command "my argument" other arguments and options'
>> ['command',
在魔兽世界插件中,一个表被作为第二个vararg传递:
-- This is often at the top of WoW lua files
local AddonTable = select(2, ...)
有没有办法用普通的lua做到这一点?我正在尝试编写一些单元测试,并对当前代码进行最小程度的更改。到目前为止,当我只使用require时,我可以使用select(1, ...)来获取要请求的第一个参数(模块),但是我似乎不知道如何填充第二个参数。
更新:
我可以使用loadfile来做我需要的事情,而不是使用require。当魔兽世界加载一个插件时,它会传递插件的名称和一个可以填充插件
我对Lua中的局部函数有点困惑。请看下面这个简化的例子。
function test()
local function f()
print("f")
g()
end
local function g()
print("g")
end
f()
end
test()
在运行这段代码时,我在函数"f“中得到一个错误,因为函数"g”是一个nil值。根据我的理解,这两个函数都应该在代码到达对函数"g“的调用时被声明,而且由于这两个函数还没有到达它们所在的块的末尾(函数"test"),