【问题标题】:Lua: Get the literal name of the parameterLua:获取参数的字面量名称
【发布时间】:2010-11-27 20:36:04
【问题描述】:

例如,

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;

【问题讨论】:

  • 为什么要这样做?你想解决什么问题?
  • 我希望能够写declare_object object1。现在我必须写declare_object“object1”。 declare_object 是一个函数。
  • 我不确定您的要求将如何帮助您在函数调用中解除大括号。
  • +1 有用的问题。这正是我今天想要实现的目标。
  • 您可以使用for k,v in pairs(_G) do print(k,v) end 获取所有变量/对象名称和值。如果变量在一个表中,可以使用相同的代码sn -p 获取表中所有对象的名称。

标签: string function lua


【解决方案1】:

你所要求的在纯 Lua 中是不可能的。

如果你真的需要这个,试试Metalua

【讨论】:

  • 我不知道为什么对边缘案例的回答经常需要包括对提问者是否真的需要做他们花时间问关于问题。尽管如此,还是投了赞成票。
【解决方案2】:

尝试使用debug library

您可以使用 debug.getlocal ([thread,] level, local) 获取有关局部变量的信息,包括其名称。

【讨论】:

  • 它是半可用的。 debug.getlocal ([thread,] level, local) 中的“local”实际上是在堆栈中声明为 local 的变量数组的索引,由 level 表示。
  • 是的,你是对的。它并不是您真正想要的通用解决方案。
  • 不要忘记 debug 模块在非调试器的生产代码中是强烈反对的。
猜你喜欢
  • 1970-01-01
  • 2011-10-25
  • 1970-01-01
  • 1970-01-01
  • 2016-01-04
  • 1970-01-01
  • 2012-04-05
  • 1970-01-01
相关资源
最近更新 更多