作者在 2018-03-29 12:01:31 发布以下内容
Pascal(Delphi)、VB中都有一个with关键字,可以帮助程序员减少大量的输入、提高效率。Lua 中没有这个关键字,但我们可以利用以下方式模拟。
例:
a={}
setfenv(function()
a=1
b=2
end,a)()
以上代码效果等于:
a.a=1
a.b=2
等价于Pascal中的:
with a do
begin
a:=1;
b:=2;
end;
当然,这样只能用于赋值,如果需要在a{}中写函数就不能这么写了。这时可以这样写:
a=setmetatable({}, {__index = _G})
setfenv(function()
a=1
b=2
function c()
print("OK")
return 0
end
end, a)()
以上代码效果等于:
a.a = 1
a.b = 2
function a.c()
print("OK")
return 0
end