2011-11-03 123 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]?這是不可能的。

如果你想兩個數組傳遞給方法,只是定義其採取兩個常規參數,然後用兩個數組調用它。

相關問題