2016-08-07 25 views
1

Ich versuche, ein einfaches Programm in lua zu tun, das eine Zeichenfolge mit bestimmten Werten basierend auf der Benutzereingabe zurückgeben soll, aber ich habe Probleme beim Erstellen von Skripten.Lua: Funktionen und Benutzereingaben?

Zum Beispiel, wenn ich kompilieren

person1 = { 
name = "bob" , 
age = 70 , 
hair = "black" , 
}; 
person2 = { 
name = "dan", 
age = 40 , 
hair = "blonde" , 
}; 
describe = function(parent) 
print ("hello " .. parent.name .. " your are " .. parent.age .. " years old 
and your hair color is " .. parent.hair) 
end 
print ("who are you") ; 
answer = io.read(); 
describe (answer) 

Ich würde erwarten, dass, wenn ich person1 als Eingangs schrieb das Skript eine Zeichenfolge zurückgeben würde, die lautet:

hallo bob Sie 70 Jahre alt sind und Ihre Haarfarbe ist schwarz

Allerdings gibt es stattdessen einen Fehler zurück.

Die Frage ist, was kann ich tun, um das zu beheben? Was ist der richtige Weg, um Benutzereingaben in Lua zu verwenden?

+1

Sie sollten Ihren Code einrücken, es macht es einfacher für uns zu lesen. – pschulz

Antwort

1

Sie müssten die object an die Funktion übergeben, nicht den Namen. Oder suchen Sie nach dem Objekt im globalen Bereich:

person1 = { 
    name = "bob" , 
    age = 70 , 
    hair = "black" , 
}; 
person2 = { 
    name = "dan", 
    age = 40 , 
    hair = "blonde" , 
}; 
describe = function(parent) 
    parent = _G[parent] 
    print ("hello " .. parent.name .. " your are " .. parent.age .. " years old and your hair color is " .. parent.hair) 
end 
print ("who are you") ; 
answer = io.read(); 
describe (answer) 

Arbeitsbeispiel: http://ideone.com/UJxnpx

+0

Entschuldigung, aber was macht _G? – Hecedu

+0

Dies ist der globale Bereich, in dem alle globalen Variablen gespeichert sind. Überprüfen Sie das Handbuch für [Grundfunktionen] (http://www.lua.org/manual/5.1/manual.html#5.1). – Jakuje

+0

Vergessen Sie '_G [Eltern]' Mist. Verwenden Sie etwa Folgendes: 'local data = {bob = {Alter = 70, Haar =" schwarz "}, dan = {Alter = 40, Haar =" blond "};" Eltern = Daten [Eltern] oder {Alter = -1, Haare = -1} '. Zugriff auf globale Variablen basierend auf Benutzereingaben - ihre Schwachstelle. – FareakyGnome