在Lua中使用quasiquote/quote?

在Lisp中,我可以有:

(a b c d e f g)

这意味着

查找b,c,d,e,f,g
查找a; 将a的值应用于上面

然后,我还可以有:

`(a b c d e f g)

它相当于

(list'a'b'c'd'e'f'g)

现在,在lua中,我可以有:

[snipplet 1]
foo = {
  Foo,
  {Cat, cat},
  {Dog, dog}
};

这最有可能扩展为: {nil,{nil,nil},{nil,nil}}

而我真正想要的是:

[snipplet 2]
{"Foo",{"Cat""cat"},{"Dog""dog"}}

有像lua中的倒引号一样的方法吗?

我发现[snipplet 1]比[snipplet 2]更具可视性,但我的意思是snipplet 2。

谢谢!

原文链接 https://stackoverflow.com/questions/2747445

点赞
stackoverflow用户107090
stackoverflow用户107090

没有语法可以解决这个问题,但是你可以尝试以下运行时方案:

setmetatable(_G,{__index=function (t,k) return k end})

这个方案可以使所有未定义的变量表现得好像它们包含了它们的名称的字符串一样。

2010-04-30 21:30:33
stackoverflow用户34799
stackoverflow用户34799

考虑一个函数,它可以解析包含Lisp语法的字符串,并从中构建一个表格。

2011-05-16 23:05:59