在处理function(v1,v2,v3)或function(...)时,似乎没有一种好方法来处理调用函数时放置参数的位置的变化。
示例功能:
df = df.loc[df['var'].isin(df2['this'].unique().tolist())]
args函数示例:
my_function(v1,v2,v3) {
print(v1, v2, v3)
}
从以上两个示例中您可以做到
my_args_func(...) {
local arg = {...}
for i,v in ipairs(arg) do
print(v)
end
}
但是,如果您要对它们中的任何一个进行更改,那么管理所有功能参数更新就变得很麻烦。
假设我们要为两个函数添加一个新值。 newval10。
我们将不得不将my_function()放在最后,例如my_function(v1,v2,v3,newval10),否则除非我们同时更新调用和接受的函数参数,否则事情将无法正常进行。 / p>
func(...)也是一样,我们只知道索引值和实际值。不是他们代表的。有没有办法拥有这样的功能
my_function(set1,set2,set3)
my_arg_func(set1,set2,set3)
可以使用my_generic_func(v1,v5,v3,v4,v2)更新,该函数将知道每个值的实际位置。
答案 0 :(得分:0)
您需要为函数提供一个带有任何名称的参数,然后将其用作其余参数。
local function generic(par)
_generic(par.arg1 or 0, --sets a default value of 0
par.arg2 or "arg2",
par.arg3 --default is "false" or "nil"
)
end
其用法如下:
a = generic{12,"alpha"} --note the use of curly braces
将使用参数generic
,12
和默认值"alpha"
执行nil
函数。
要专门指出要设置的变量,可以执行以下操作:
a = generic{arg1=12,arg2="alpha"}
您输入arg1 / arg2的顺序无关紧要。
但是,您不能在未事先预定义的情况下接受额外的参数,例如,如果您尝试在花括号内为函数提供四个参数,则会吐出错误。
基本上,这是将一个表输入到具有一个参数的函数中,然后从该表而不是多个参数中获取信息。