Bizzare "versucht, rufen Sie eine Tabelle mit dem Wert" in Lua
Den folgenden code-snippet:
for weight, item in itemlist do
weight_total=weight_total+weight
end
verursacht die Fehlermeldung "Versuch, rufen Sie die Tabelle mit dem Wert" auf die erste Zeile in diesem Codefragment. Warum?
Itemlist ist eine Tabelle, die Tabellen der GEWICHTE und Zeichenfolgen wie:
local itemlist = {
{4,"weapon_pistol"},
{2,"weapon_357"},
...
Nichts genannt wird, so weit ich erzählen kann, warum ist dieser Fehler kommen?
InformationsquelleAutor Schilcote | 2014-04-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Generic
for
erwartet 3 Argumente: ein callable Wert, etwas Wert wiederholt auf ihn übergegangen ist, und den Schlüssel dort, wo die iteration beginnen soll.Lager lua nicht nennen Paare auf den ersten Wert übergeben, wenn das ist nicht aufrufbar, obwohl einige Derivate tun.
So, müssen Sie
ipairs(itemlist)
,pairs(itemlist)
,next, itemlist
oder was auch immer Sie wollen (die letzten zwei identisch Verhalten, und sind, was die meisten Derivate).Iterator Auspacken der Wert Sequenz...
for k, weight, item in pairs(itemlist) do
?next
gibt ein Schlüssel-Wert-paar aus der übergebenen Tabelle, also mehr wiefor k, v in pairs(itemlist) do
. (Ich bin jetzt annehmen, dass jeder Wertv
enthält Gewicht und item...) wie auch immer, die standard-Lua-Dokumentation (5.2) ist sehr leicht verdaulich imho...Jeder Wert v wäre eine weitere Tabelle mit dem Gewicht und Position. Ich werde die Dokumentation Lesen.
Eine weitere Funktion weiter verhält, als Sie fragte, als ein Beispiel.
InformationsquelleAutor Deduplicator