快速确定变量是否为函数的方法?

时间:2017-01-19 14:17:46

标签: reflection lua metadata

要确定变量是否为函数,我使用以下方法

function isFunction(variable)
    return type(variable) == "function"
end

据我所知,这是一个字符串比较。正如我所理解的那样,字符串比较相对较慢,我担心这个函数可能是我的代码中的瓶颈。是否有一种成本较低的方法来确定变量是否为函数?

我希望有一个函数返回一个整数,表示变量的类型。或者我可以用另一种方式提出我的问题:type(var)如何确定变量的类型?当然,每个变量都不能保存表示其类型的字符串,因此我猜测在调用"function"时,lua中有一些后端内容可以查找字符串type(var)

1 个答案:

答案 0 :(得分:8)

Lua中的字符串比较非常快,因为大多数字符串都是实例化的。

在内部,每个Lua值都包含一个标识其类型的标记。这是type使用的标记。