2009-09-13 5 views
10

Zum BeispielLua: Holen Sie sich das wörtliche Namen des Parameters

function test (a) 
    name = nameof(a) 
    print(name) 
end 

test(def) --should print "def" 

es irgendwelche lua Tricks etwas Ähnliches wie die oben zu implementieren?


Nicht, dass jemand zu erklären, muss warum sie wollen, etwas zu tun; Manche Leute werden mürrisch, wenn ihnen kein wirkliches Beispiel gegeben wird. Also:

local function registerTestSuite(suite) 
    if (LUnit) then 
     LUnit:AddTestSuite(
      HotNReady.."_"..GetVariableName(suite), --HotNReady_PizzaTestSuite 
      suite); 
    end; 
end; 
+2

Warum möchten Sie das tun? Welches Problem versuchen Sie zu lösen? – lhf

+0

Ich möchte in der Lage sein, declare_object object1 zu schreiben. Jetzt muss ich declare_object "object1" schreiben. declare_object ist eine Funktion. – jameszhao00

+1

Ich bin mir nicht sicher, wie das, wonach Sie fragen, Ihnen helfen würde, die Klammern in einem Funktionsaufruf anzuheben. –

Antwort

3

Was Sie verlangen, ist in reinem Lua nicht möglich.

Wenn Sie wirklich brauchen, versuchen Sie, mit Metalua fummeln.

+0

Ich bin mir nicht sicher, warum Antworten auf Edge Cases so oft radikale Skepsis beinhalten müssen, ob der Fragende wirklich das tun muss, wofür er sich die Zeit genommen hat, eine Frage zu stellen. Trotzdem aufgewertet. –

1

Versuchen Sie mit der debug library.

Sie können debug.getlocal ([thread,] level, local) verwenden, um Informationen über eine lokale Variable einschließlich ihres Namens abzurufen.

+0

Es ist halb verwendbar. Das "local" in debug.getlocal ([thread,] level, local) ist eigentlich der Index in ein Array von Variablen, die im Stack als local deklariert sind. – jameszhao00

+0

Ja, du hast Recht. Es ist nicht wirklich die allgemeine Lösung, nach der Sie suchen. –

+0

Vergessen Sie nicht, dass das Debug-Modul in Produktionscode, der kein Debugger ist, dringend empfohlen wird. – RBerteig

Verwandte Themen