我有一个函数foo
可以在某些情况下获取 nil 值,即foo(VarA)
whileVarA
未定义。这个 undefinedVarA
应该被解释为"VarA"
但我不能调用foo("VarA")
,因为VarA
它应该作为一个选项参数(不同于普通的字符串参数)。
mt = {__index = function(t, k) return k end}
setmetatable(_G, mt)
这将获得所需的结果,但现在所有其他未定义的变量都将返回其名称。喜欢abc -> "abc"
。您是否看到在这种特定情况下仅激活元表的任何方法?我可以在我的方法中切换元表,foo
但是当我在foo
块中时,传递的参数已经为零并且为时已晚。
附录:我认为这个问题不够具体。Schollii 将参数作为表格传递的答案很好,但没有按预期工作:
foo({option1 = delete, option2 = push})
这应该有键信息(选项 1 和选项 2)加上值的信息(即使删除和推送在全局或本地命名空间中不存在)。Schollii 的方法会给我关键信息而不是价值信息(如“删除”和“推送”)。我不能预先定义删除和推送,因为这些新的“关键字”应该稍后由函数本身定义。将这些新关键字作为字符串传递是没有选择的。