lua 表中键的语法问题

lua 表中键的语法问题

我使用一个表格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_abp = 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 这样的函数来一次获得所有相等性。

我没看到你在这里想要什么。

相关内容