/ / Versuch, lokales 'g2' (einen Funktionswert) zu indizieren - lua

Versuch, lokale 'g2' (ein Funktionswert) zu indizieren - lua

Das Programm, das ich verwende, wird aufgerufen Oxidationsmittel, ein fraktales flam3 Editor. Um diese wunderschönen Kunstwerke digitaler Kunst zu animieren, verwende ich sie .lua Skripte.

Das eine Skript, das ich verwende, algorhythm.lua Ruft andere Skripte auf, um zu funktionieren. Eines ist das Kontrollskript cs_temp.lua ein anderer ist utils.lua. Dort bekomme ich den Fehler.

Die spezifische Zeile, die als Fehler angezeigt wird, ist 1399, die zweite Zeile im folgenden Code.

function alignx(g1,g2)
local x1,x2 = #g1.xforms,#g2.xforms
-- Align xforms for final-x, pad if necessary
local fx1,fx2 = 0,0

for x=1,x1 do
if g1.xforms[x].is_finalxform == "Y" then fx1 = x end
end
for x=1,x2 do
if g2.xforms[x].is_finalxform == "Y" then fx2 = x end
end
if fx1>0 or fx2>0 then

-- case 1: both have finalx - reorder g2

if fx1>0 and fx2>0 and fx1~=fx2 then
print("case 1")
if fx1>x2 then              -- pad g2 with sufficient xforms
for i=1,math.abs(fx1-x2) do
table.insert(g2.xforms,newx())
print("adding xform to genome 2")
end
x2 = #g2.xforms
end
x2ind = agen(x2,1,x2)
x2ind[fx2] = fx1
x2ind[fx1] = fx2
xforms2 = ordx(g2.xforms,x2ind)
g2.xforms = xforms2
end

-- case 2: g1 has finalx but not g2 - xpad and reorder g2
if fx1>0 and fx2==0 then
print("case 2")             -- pad g2 with final xform
local xtmp = newx(1)
xtmp.is_finalxform = "Y"
xtmp.symmetry = 1
table.insert(g2.xforms,clone_genome(xtmp))
print("adding final xform to genome 2")
x2 = #g2.xforms
fx2 = x2
if fx1>x2 then              -- pad g2 with sufficient xforms
for i=1,math.abs(fx1-x2) do
table.insert(g2.xforms,newx())
print("adding xform to genome 2")
end
x2 = #g2.xforms
end
x2ind = agen(x2,1,x2)
x2ind[fx2] = fx1
x2ind[fx1] = fx2
xforms2 = ordx(g2.xforms,x2ind)
g2.xforms = xforms2
end

-- case 3: g2 has finalx but not g1 - xpad g1 and reorder g2
if fx1==0 and fx2>0 then
print("case 3")
local xtmp = newx(1)
xtmp.is_finalxform = "Y"
xtmp.symmetry = 1
table.insert(g1.xforms,clone_genome(xtmp))
print("adding final xform to genome 1")
x1 = #g1.xforms
fx1 = x1
if fx1>x2 then              -- pad g2 with sufficient xforms
for i=1,math.abs(fx1-x2) do
table.insert(g2.xforms,newx())
print("adding xform to genome 2")
end
x2 = #g2.xforms
end
x2ind = agen(x2,1,x2)
x2ind[fx2] = fx1
x2ind[fx1] = fx2
xforms2 = ordx(g2.xforms,x2ind)
g2.xforms = xforms2
end
end
end

Ich weiß, dass es eine Menge ist, die ich durchgehen muss, aber ich wollte so genau wie möglich sein.

Antworten:

3 für die Antwort № 1

In Ihrer Frage (noch unklar) ist die folgende Zeile problematisch:

local x1,x2 = #g1.xforms,#g2.xforms

Der Fehler Versuch zu indexieren kommt im vor Lua Programm weil Ihr g2.xforms muss als Tabelle initialisiert werden, was erneut verlangt g2 ein Tisch sein

Überprüfen Sie Ihren gesamten Code und verfolgen Sie, wenn Sie irgendwo definiert haben g2 Funktion sein, weil Ihr Programm es als Funktionsvariable statt als Tabelle interpretiert.