2009-09-13 3 views
10

예를 들어,루아 : 매개 변수의 문자 그대로의 이름을 얻는다.

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

test(def) --should print "def" 

위와 비슷한 것을 구현하는 트릭이 있습니까?


그 누구도 을 설명 할 필요가 없습니다. 일부 사람들은 실제 사례가 주어지지 않으면 심술 궂게됩니다. 그래서 :

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

왜이 작업을 수행 하시겠습니까? 어떤 문제를 해결하려고합니까? – lhf

+0

declare_object object1을 작성할 수 있어야합니다. 지금은 declare_object "object1"을 작성해야합니다. declare_object는 함수입니다. – jameszhao00

+1

함수 호출에서 중괄호를 들어 올리는 데 도움이 될 것이라고 확신하는 방법을 모르겠습니다. 유용한 질문은 –

답변

3

당신이 요구하는 것은 순수한 루아에서는 불가능합니다.

실제로이 필요하면 Metalua을 부탁합니다.

+0

저는 왜 엣지 케이스에 대한 대답이 질문자 **가 ** 질문을하기 위해 시간을 할애해야하는지에 대해 급진적 인 회의론을 포함해야하는 이유가 무엇인지 잘 모르겠습니다. 그럼에도 불구하고 upvoted. –

1

debug library을 사용해보세요.

debug.getlocal ([thread,] level, local)을 사용하면 이름을 포함하여 로컬 변수에 대한 정보를 얻을 수 있습니다.

+0

반 유용합니다. debug.getlocal ([thread,] level, local)의 "local"은 실제로 level로 표시된 스택에서 로컬로 선언 된 변수 배열에 대한 인덱스입니다. – jameszhao00

+0

네 말이 맞아. 당신이 찾고있는 범용 솔루션이 아닙니다. –

+0

'debug' 모듈은 디버거가 아닌 프로덕션 코드에서 사용하지 않는 것이 좋습니다. – RBerteig

관련 문제