我有一个需要参数的函数表,函数用字符串
标记local tbl = {fnct1 = function(x), fnct2 = function(x), ...}
我从另一个函数返回的表中得到了该字符串。
fnct1 = str[1]
这些函数应该返回一个表。 我在调用函数时将参数放在哪里? 这似乎不起作用:
table = tbl[str[1](x)]
答案 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)
。