如何调用表中的函数,该表由我从另一个函数获取的字符串索引,我还需要添加参数?

时间:2016-07-08 15:13:33

标签: function lua arguments lua-table

我有一个需要参数的函数表,函数用字符串

标记
local tbl = {fnct1 = function(x), fnct2 = function(x), ...}

我从另一个函数返回的表中得到了该字符串。

fnct1 = str[1]

这些函数应该返回一个表。 我在调用函数时将参数放在哪里? 这似乎不起作用:

table = tbl[str[1](x)]

2 个答案:

答案 0 :(得分:2)

正如@lhf所说:

tbl[str[1]](x)

知道函数是值可能会有所帮助。

从语法上讲,你"获得"通过表达式的任何值。如果您正在获取您认为是函数的值,则可以调用它。

函数调用的语法是值的表达式,后跟括号,其间有0个或更多的参数表达式。

因此,tbl[str[1]]是一个表达式,调用由()表示,x是一个参数的表达式。评估两个表达式并尝试调用。如果括号前的表达式未计算为函数值,则会出现运行时错误。

进一步细分,表是一个值,它使用唯一键聚合键值对。 (键是一个值,"值"是一个值。)获得"值"从表中,您使用键索引表。原型语法为:expression0 [ expression1 ],其中expression0应评估为表值,expression1应评估为键值。您可以递归地将其应用于tbl[str[1]]

[为方便起见,如果某个键是符合标识符规则的字符串,则可以使用.运算符(或与函数调用结合使用:运算符)进行索引。 ]

答案 1 :(得分:1)

你通常把论点放在哪里?功能之后。

所以,如果函数是tbl[str[1]],只需像往常一样添加它们:tbl[str[1]](args)