![lua 表中键的语法问题](https://linux22.com/image/462046/lua%20%E8%A1%A8%E4%B8%AD%E9%94%AE%E7%9A%84%E8%AF%AD%E6%B3%95%E9%97%AE%E9%A2%98.png)
我使用一个表格z={}
:键是点的名称,值是我的示例坐标。
示例:z.a = {0,1}
我更喜欢这种表示法z[a]
。我尝试使语法尽可能简单,因为我知道最终键将成为 TikZ 中的坐标名称。
因此,我测试了z.O_0 = {0,0}
一下,目前没有问题,只是稍晚了一点。
然后使用 Tikz 就可以使用了a'
。阅读文档后,我意识到我不能使用带有的糖语法.
,我也测试了 z["a'"]
。这是正确的,但写起来很痛苦。新测试ap = "a'"
和我预期的一样z[ap]
被接受了,但也令人惊讶z.ap
。
-- 第一个问题:为什么被z.ap
接受?ap
类型为“string”,但在这里它是一个变量?
现在我再次尝试简化语法a = z.a
b=z.b
ap = z[ap]
c_a = z.c_a
并bp = z.bp
成功了。这似乎合乎逻辑,因为它指向同一张表。
-- 第二个问题:我想使用一个函数来iso
一次性获取所有相等的值。
我尝试过类似的事情:
for k,v in pairs(z) do
k = ...
end
但我还没有找到解决办法。
最后一个问题是当我想测试坐标的存储时。我之前没有看到这个问题,因为代码被注入到 TikZ 代码中,但在这种情况下,您可以_
在坐标或节点名称中使用。当简化代码以提出我的问题时,我看到我必须使用$$
来显示类似的东西,但现在我在c_a
使用时遇到了问题。$$
tex.print
我以前总是z.c_a=nil
把它排除在外
-- 最后一个问题:如何打印 中的所有键for loop
。我不能\\_
像以前那样使用。
\documentclass{article}
\usepackage{luacode}
\begin{document}
\parindent = 0pt
\begin{luacode}
tp=tex.print
z = {}
z.a = {5,2}
z.b = {3,-2}
z.c_a = {3,2}
ap = "a'"
bp = "b'"
tex.print("type of ap is :".. type(ap)) -- > string
tex.print('\\\\')
z[ap] = {99,0} -- z."a'" = {1,1} -- > error it's ok
z.bp = {66,55} --
tex.print("x coordinate for z[ap] is ".. z[ap][1])
tex.print('\\\\')
tex.print("x coordinate for z.bp= \\{66,0\\} is ".. "z.bp[1] = " ..z.bp[1])
tex.print('\\\\')
bp = z.bp -- but "a'" = z["a'"] is not possible
--tex.print(" ap works like :" .. z[ap][1])
tex.print('\\\\')
tp("Sugar syntax : a=z.a b=z.b ap =z[ap] bp=z.bp")
a=z.a
b=z.b
bp = z.bp
ap = z[ap]
c_a = z.c_a
tex.print('\\\\')
tp("Test with sugar syntax :"..'\\\\')
tp("y coordinate for a[2] is ".. "a[2]= "..a[2])
tp('\\\\')
tp("y coordinate for ap[2] is ".. "ap[2]= "..ap[2])
tp('\\\\')
tp("y coordinate with bp[2]= "..bp[2])
tp('\\\\')
tp("y coordinate with c\\_a[1]= "..c_a[1])
tp('\\\\')
tex.print("The stored coordinates are : "..'\\\\')
z.c_a = nil. -- when `k=c_a` $$ are required but `$k$`does not work
for k,v in pairs(z) do
tp(k) tp(tostring(" represents :")) tp(tostring("(" .. v[1]..","..v[2]..")"))
tex.print('\\\\')
end
\end{luacode}
\end{document}
答案1
该网站每个问题一个问题效果最好:-)但要挑出我认为主要令人困惑的问题;
bp = z.bp
两者之间没有关系bp
。第一个是变量 bp,但z.bp
它是 的语法糖,z["bp"]
因此可以使用键 访问表条目bp
。
"a'" = z["a'"] is not possible
您不能为字符串文字分配任何东西,因此在=
我发现我必须使用 $$ 来显示类似 c_a 的内容
仅当您想将其显示为数学下标时才显示。这里您只想将其显示c_a
为变量名,因此请使用\texttt{\detokenize{c_a}}
或类似名称。
第二个问题:我想使用像 iso 这样的函数来一次获得所有相等性。
我没看到你在这里想要什么。