我试图通过函数参数有条件地执行一些代码块,具体取决于全局变量。
我尝试了以下内容:
function PrintCondition(CodeIfA, CodeIfB)
if SomeGlobal == "A" then
loadstring(CodeIfA);
return true;
elseif SomeGlobal == "B" then
loadstring(CodeIfB);
return true;
else
Error();
return false;
end
end
然后我用
调用该函数local temp = PrintCondition(
[[
print("global is A");
]],
[[
print("global is B");
]]
);
print(temp); -- prints 'true'
然而,它似乎不起作用。即使我错误格式化字符串以引发语法错误,我也什么也得不到。
我在尝试一些无法做到的事情吗?
答案 0 :(得分:3)
Lua 5.2中的所有loadstring()
(或load()
)确实是加载字符串,它没有真正运行它,你需要将它保存到函数然后运行它:
local func = loadstring(CodeIfA);
func();
答案 1 :(得分:2)
loadstring
返回一个函数实例。您需要从函数返回loadstring
执行:
function PrintCondition( CodeIfA, CodeIfB )
if SomeGlobal == "A" then
return loadstring(CodeIfA)
elseif SomeGlobal == "B" then
return loadstring(CodeIfB)
else
Error()
return false
end
end
然后在外面打电话:
local temp = PrintCondition(
[[
print("global is A");
]],
[[
print("global is B");
]]
)
temp()