2009-09-13 9 views
10

のリテラル名を取得し、のLua:たとえば、パラメータ

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

test(def) --should print "def" 

は、上記と同様のものを実装する任意のLUAのトリックはありますか?誰もがは、彼らが何かをしたい理由を説明する必要があることを


わけではありません。実生活の例が与えられていない人もいます。したがって:

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

私は、質問者が質問をする時間を取って本当に**必要かどうかという根本的な懐疑論を含む必要がある場合が多いのかどうかはわかりません。それにもかかわらず。 –

1

debug libraryをお試しください。

debug.getlocal ([thread,] level, local)を使用して、ローカル変数に関する情報(名前を含む)を取得できます。

+0

半使用可能です。 debug.getlocal([thread、] level、local)の "local"は、実際には、levelで示されるスタック内でローカル宣言された変数の配列へのインデックスです。 – jameszhao00

+0

ええ、そうです。あなたが探している汎用ソリューションではありません。 –

+0

'debug'モジュールは、デバッガではないプロダクションコードでは強く推奨されません。 – RBerteig

関連する問題