完整的 groovy 参数列表
Complete groovy list of parameters
我有一个带有可选参数列表的函数:
cleanFolders(String... folders) {
other_function_called(param1,param2,param3)
}
这个函数调用了另一个函数,它恰好接受了三个参数。
所以,我想使用参数列表 folders 来调用另一个函数:
- 如果文件夹列表中只有一个元素,我调用
other_function_called(folders[0],"none","none")
- 如果有两个元素:
other_function_called(folders[0],folders[1],"none")
- 以及三个元素:
other_function_called(folders[0],folders[1],folders[2])
我如何正确地做到这一点(不使用许多可耻的“if else”)?
谢谢
如 Jeff 所写,您可以使用 *
解压缩可变参数数组。
但是,如果参数数量不匹配,这会给你 MissingMethodException
。
对于这种情况,您可以创建一个以可用值开头的新数组,然后用剩余的默认值填充该数组,以便解压缩它时恰好匹配正确数量的参数。
def spreadArgs = args + ["none"] * (3 - args.size())
other_function_called(*spreadArgs)
我有一个带有可选参数列表的函数:
cleanFolders(String... folders) {
other_function_called(param1,param2,param3)
}
这个函数调用了另一个函数,它恰好接受了三个参数。
所以,我想使用参数列表 folders 来调用另一个函数:
- 如果文件夹列表中只有一个元素,我调用
other_function_called(folders[0],"none","none")
- 如果有两个元素:
other_function_called(folders[0],folders[1],"none")
- 以及三个元素:
other_function_called(folders[0],folders[1],folders[2])
我如何正确地做到这一点(不使用许多可耻的“if else”)?
谢谢
如 Jeff 所写,您可以使用 *
解压缩可变参数数组。
但是,如果参数数量不匹配,这会给你 MissingMethodException
。
对于这种情况,您可以创建一个以可用值开头的新数组,然后用剩余的默认值填充该数组,以便解压缩它时恰好匹配正确数量的参数。
def spreadArgs = args + ["none"] * (3 - args.size())
other_function_called(*spreadArgs)