2011-11-03 59 views
0

我试图做这样的事情,但我不知道很多关于这门语言:可以通过2个变量参数的函数/方法

def teste (*array1, *array2)

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

+0

这如果你粘贴了更多的代码,会很有帮助。 – Richard

+0

@Richard他希望由语言自动处理2个变长参数列表。就像'teste(var1,var2,var3,var4)',其中var1和var2是array1的一部分,var3和var4是array2的一部分。正如我在答复中所说的那样,这是不可能的。 – deviousdodo

回答

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

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

如果你想两个数组传递给方法,只是定义其采取两个常规参数,然后用两个数组调用它。

相关问题