为了在 lua 中实现特定领域的语言,我想在语言中添加裸词。所以
print("foo")
可以写成print(foo)
我这样做的方法是更改环境表的元表_G
。
mt = {__index = function(tbl,key) return key end}
setmetatable(_G, mt)
这很有效,因为检索变量的值foo
是通过_G.foo
相当于_G["foo"]
这是一个好方法吗?有没有隐藏的缺点?有没有更好的办法?我可以这样做以使裸词仅在某个文件中起作用吗?(也许通过从另一个 luascript 执行该文件,使用loadstring
)