lua wie funktioniert funktioniert

8

Ich verwende eine Grafikbibliothek, mit der Sie in Lua programmieren können. Ich habe ein Bedürfnis für die A * pathfinding Bibliothek, also fand ich eine online. Es ist nur 1 Lua-Datei, die Pfadfindung und 1 Beispieldatei. In der Beispieldatei wird das Objekt wie folgt verwendet:

%Vor%

Ich führe das Skript und alles funktioniert. Jetzt füge ich die Astar.lua-Datei zum Pfad hinzu, auf dem meine Grafik-Engine läuft, und mache das Gleiche und erhalte den Fehler in der Astar-Zeile (map, 1):

"versuchen, den lokalen 'AStar' (einen Zahlenwert) aufzurufen

Irgendwelche Ideen, warum ich diesen Fehler bekommen würde, wenn ich dasselbe mache wie das Beispiel, das mit dieser AStar-Lib geliefert wird?

Hier ist ein kleiner Teil der AStar-Datei

%Vor%

Beachte also, dass wenn ich das von meiner Grafik-Engine aus starte, es 1 zurückgibt, aber wenn es aus dem Beispiel kommt, dass es mit geliefert wurde, gibt es eine Tabelle zurück, die es zurückgeben sollte. Also nicht sicher, warum es nur 1 zurückgeben würde.

    
user441521 01.08.2011, 17:24
quelle

2 Antworten

9

Wie wird Astar im Gegensatz zu Ihrem Code zur package.loaded -Tabelle für das Beispielskript hinzugefügt?

  

SCHNELLER LUA SYNTAKTISCHER ZUCKERRÜCKBLICK:

     
  • func 'string' entspricht func('string')
  •   
  • tabl.ident entspricht tabl['ident']
  •   

Wenn Sie ein Skript mit require('Astar') ausführen, ist dies Folgendes:

  • prüft, ob package.loaded['Astar'] ein Nicht-Null-Wert ist.
    • Wenn ja, gibt es diesen Wert zurück. Sonst geht es in dieser Liste weiter.
  • Führt Dateinamen von Mustern durch, die in package.path (und package.cpath ) aufgelistet sind, mit '?' ersetzt durch 'Astar', bis die erste Datei gefunden wird, die dem Muster entspricht.
  • Setzt package.loaded['Astar'] auf true .
  • Führt das Modul-Skript aus (über die Pfadsuche oben zu finden - für dieses Beispiel nehmen wir an, dass es kein C-Modul ist) mit 'Astar' als Argument (zugänglich als ... im Modulskript).
  • Wenn das Skript einen Wert zurückgibt, wird dieser Wert in package.loaded['Astar'] .
  • eingefügt
  • Der Inhalt von package.loaded['Astar'] wird zurückgegeben.
    • Beachten Sie, dass das Skript das Paket als Teil seiner Ausführung in package.loaded['Astar'] laden und nichts zurückgeben kann.

Wie jemand in den obigen Kommentaren angemerkt hat, kann Ihr Problem dadurch entstehen, dass Sie das Modul mit 'A S tar' anstelle von 'A s tar "Astar" anstelle der "AStar" Lua verwenden, lädt das Skript unter).

    
Stuart P. Bentley 21.08.2011, 06:26
quelle
5

Sie müssen return Astar am Ende von Astar.lua hinzufügen.

    
lhf 01.08.2011 20:25
quelle

Tags und Links