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具有“字串”類型,但這裡它是一個變數?

現在為了再次簡化語法,我嘗試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"]因此使用 key 存取表格條目bp

"a'" = z["a'"] is not possible

您不能將任何內容分配給字串文字,因此在=

我發現我必須使用 $$ 來顯示類似 c_a 的內容

僅當您想將其顯示為數學下標時。這裡你只想c_a當變數名,所以使用\texttt{\detokenize{c_a}}或類似的。

第二個問題:我想使用像 iso 這樣的一個函數來一次得到所有相等性。

我在這裡看不到你想要什麼。

相關內容