2009-09-13 21 views
10

Por ejemplo,Lua: Obtener el nombre literal del parámetro

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

test(def) --should print "def" 

¿Hay trucos lua para implementar algo similar a la anterior?


No es que alguien tiene que explicar por qué que quieren hacer algo; algunas personas se ponen de mal humor si no se les da un ejemplo de la vida real. Entonces:

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

¿Por qué quieres hacer esto? ¿Que problema estas tratando de resolver? – lhf

+0

Quiero poder escribir declare_object object1. Ahora mismo tengo que escribir declare_object "object1". declare_object es una función. – jameszhao00

+1

No estoy seguro de cómo lo que está pidiendo lo ayudará a levantar los frenos en una llamada a función. –

Respuesta

3

Lo que está pidiendo no es posible en Lua puro.

Si usted realmente necesita esto, intente tocar el filo con Metalua.

+0

No estoy seguro de por qué las respuestas a los casos extremos a menudo deben incluir un escepticismo radical en cuanto a si el interrogador ** realmente ** necesita hacer algo sobre lo que se tomó el tiempo para hacer una pregunta. Sin embargo, votado a favor. –

1

Pruebe usar el debug library.

Puede usar debug.getlocal ([thread,] level, local) para obtener información sobre una variable local, incluido su nombre.

+0

Es semi utilizable. El "local" en debug.getlocal ([thread,] level, local) es en realidad el índice en una matriz de variables declaradas locales en la pila denotada por nivel. – jameszhao00

+0

Sí, tienes razón. No es realmente la solución de propósito general que está buscando. –

+0

No olvide que el módulo 'debug' está desaconsejado en el código de producción que no es un depurador. – RBerteig