可以在函数/方法中传递2个变量参数

时间:2011-11-03 11:23:47

标签: ruby

我试图做这样的事情,但我对这种语言知之甚少:

def teste (*array1, *array2)

这可能吗?我必须传递一个数字和字符串数组,只传递一个字符串,但我不知道每个元素有多少元素。

4 个答案:

答案 0 :(得分:2)

你的数组参数有多少元素都没关系。为了您的目的,您可以这样做:

def teste(arr_of_strings_and_numbers, arr_of_only_strings)

现在调用这样的方法:

teste( [1, 2, 3, 'foo', 'bar'], ['foo', 'bar', 'baz'] )

在您的方法正文中,您现在可以访问: arr_of_strings_and_numbers等于[1, 2, 3, 'foo', 'bar']arr_of_only_strings等于['foo', 'bar', 'baz']

答案 1 :(得分:1)

您可以根据需要传递任意数量的参数。

然而,你可能不想“抨击”他们,这有点非常具体。

答案 2 :(得分:1)

这是不可能的,语言无法知道元素属于哪个数组。但是你可以简单地传递2个数组。

答案 3 :(得分:1)

方法中不能有两个可变参数列表。如果用你想要的两个可变参数列表定义一个方法是合法的,那么当你调用说teste(a,b,c)时,ruby如何知道哪个参数应该放在哪个数组中?这会导致array1 = [a]; array2 = [b,c]还是array1 = [a,b]; array2=[c]?这是不可能的。

如果要将两个数组传递给方法,只需将其定义为两个常规参数,然后用两个数组调用它。