如何调用 table 中的函数,该函数由我从另一个函数获得的字符串索引,并且我还需要添加参数?
How do I call a function that's in a table, which is indexed by a string that I get from another function, and I also need to add arguments?
我有 table 个需要参数的函数,这些函数标有字符串
local tbl = {fnct1 = function(x), fnct2 = function(x), ...}
我从另一个函数 return 编辑的 table 中得到的那个字符串。
fnct1 = str[1]
这些函数应该return一个table。
调用函数时,参数放在哪里?
这似乎不起作用:
table = tbl[str[1](x)]
正如@lhf 所述:
tbl[str[1]](x)
了解函数是一个值可能会有所帮助。
从句法上讲,您 "acquire" 任何值都可以通过表达式。如果您正在获取您认为是函数的值,则可以调用它。
函数调用的语法是值表达式后跟圆括号,中间有 0 个或多个参数表达式。
因此,tbl[str[1]]
是一个表达式,调用由 (
和 )
表示,而 x
是一个参数的表达式。计算两个表达式并尝试调用。如果括号前的表达式未计算为函数值,则会出现运行时错误。
进一步分解,a table 是一个值,它聚合了具有唯一键的键值对。 (键是一个值,"value" 是一个值。)要从 table 获得 "value",您可以使用键索引 table。原型语法是:expression0 [ expression1 ]
,其中 expression0
应计算为 table 值,而 expression1
应计算为键值。您可以递归地将其应用于 tbl[str[1]]
.
[ 为方便起见,如果键是满足标识符规则的字符串,则可以使用 .
运算符进行索引(或者,结合函数调用, :
运算符).]
你通常把参数放在哪里?功能后.
因此,如果函数是 tbl[str[1]]
,只需像往常一样在后面添加它们:tbl[str[1]](args)
.
我有 table 个需要参数的函数,这些函数标有字符串
local tbl = {fnct1 = function(x), fnct2 = function(x), ...}
我从另一个函数 return 编辑的 table 中得到的那个字符串。
fnct1 = str[1]
这些函数应该return一个table。 调用函数时,参数放在哪里? 这似乎不起作用:
table = tbl[str[1](x)]
正如@lhf 所述:
tbl[str[1]](x)
了解函数是一个值可能会有所帮助。
从句法上讲,您 "acquire" 任何值都可以通过表达式。如果您正在获取您认为是函数的值,则可以调用它。
函数调用的语法是值表达式后跟圆括号,中间有 0 个或多个参数表达式。
因此,tbl[str[1]]
是一个表达式,调用由 (
和 )
表示,而 x
是一个参数的表达式。计算两个表达式并尝试调用。如果括号前的表达式未计算为函数值,则会出现运行时错误。
进一步分解,a table 是一个值,它聚合了具有唯一键的键值对。 (键是一个值,"value" 是一个值。)要从 table 获得 "value",您可以使用键索引 table。原型语法是:expression0 [ expression1 ]
,其中 expression0
应计算为 table 值,而 expression1
应计算为键值。您可以递归地将其应用于 tbl[str[1]]
.
[ 为方便起见,如果键是满足标识符规则的字符串,则可以使用 .
运算符进行索引(或者,结合函数调用, :
运算符).]
你通常把参数放在哪里?功能后.
因此,如果函数是 tbl[str[1]]
,只需像往常一样在后面添加它们:tbl[str[1]](args)
.