bearbeiten ich diese Arbeit hätte, bin ich nicht sicher, ob dies der richtige Weg ist, es zu tun, aber das ist, was jetzt funktioniertVerwendung von Tabellen in anderen Dateien
Ich habe gerade angefangen Lua lernen, und ich Ich versuche herauszufinden, wie Tabellen zwischen Dateien übergeben werden, damit ich einen besser organisierten Codespace haben kann. Ich habe das Buch Programmierung in Lua gelesen und aus irgendeinem Grund kann ich nicht herausfinden, was ich falsch mache.
Das Problem, das ich bin immer ist dieser Fehler:
lua: Test2.lua: 3: Versuch Methode aufzurufen 'Neu' (ein Null-Wert)
Von diesem Code:
--Test.lua----------------
module("Test", package.seeall)
vector = require "./Hump/vector"
Bot = {}
Bot.position = vector.new(0,0)
function Bot:New(object)
object = object or {}
setmetatable(object, self)
self.__index = self
return object
end
--Test2.lua------------------
require "Test"
Bot1 = Test.Bot:New()
print(Bot1.position)
Soweit ich es verstehe, bedeutet dieser Fehler, dass es die Methode nicht neu finden kann, es ist effektiv undefiniert. Ich dachte, dass die Datei im Pfad importiert werden muss?
Yeah, ich habe gemerkt, dass Zeile 3 wirklich B.position = 0 sein sollte, nach einigen Untersuchungen habe ich dieses funktionierende Modul ("Test", package.seeall) ist dieser richtige Weg, um dieses Problem zu umgehen? – RedShft
Wenn Sie es funktioniert haben, haben Sie Änderungen darüber hinaus gemacht, weil 'Bot' in dem Code, den Sie gepostet haben, ein leerer Tisch ist. Sie sollten auch das '__index =' auf 'Bot' selbst setzen, da es das Metatable ist. Und Sie wollen nicht 'position =' in 'Bot', es sei denn, dies ist eine Klassenvariable (d. H. Für alle Instanzen von' Bot' gleich). Wenn Position für jede "Bot" -Instanz ein eindeutiger Status ist, müssen Sie für das Objekt im Konstruktor "Bot" initialisieren. – Mud
Mein Plan war, eine Klassenvariable für alle Typen Bot zu machen, ja. Was ist der Unterschied zwischen self .__ index = self und self .__ index = Bot? – RedShft