ruby - Separate an array of arrays to be passed into a method as multiple objects -



ruby - Separate an array of arrays to be passed into a method as multiple objects -

i have method accepts multiple arrays splat operator taken thread.

def interleave(a,*args) max_length = args.map(&:size).max padding = [nil]*[max_length-a.size, 0].max (a+padding).zip(*args).flatten.compact end

i have array of arrays:

my_array = [[1,2],[3,4],[5,6]]

how pass

interleave(my_array)

so passes subarrays in separately? can't seem separate my_array (of there can hundreds) separate objects.

what think you're attempting can accomplished using splat operator @ time of method invocation, such:

hello(*my_array)

here's finish example:

def foo(a, *b) puts a.inspect puts b.inspect end foo(*[[1, 2], [3, 4], [5, 6]])

prints following:

[1, 2] [[3, 4], [5, 6]]

edit: other solution

now you've pasted source sentiment method should re-written take single parameter instead of using splat operator in parameters pull out first , rest. reason if length of multidimensional array changes @ runtime you'd improve off pulling out first , rest within method you're not having utilize splat everywhere.

def interleave(args) a, *args = args max_length = args.map(&:size).max padding = [nil]*[max_length-a.size, 0].max (a+padding).zip(*args).flatten.compact end foo([[1, 2], [3, 4], [5, 6]])

ruby arrays

Comments

Popular posts from this blog

formatting - SAS SQL Datepart function returning odd values -

c++ - Apple Mach-O Linker Error(Duplicate Symbols For Architecture armv7) -

php - Yii 2: Unable to find a class into the extension 'yii2-admin' -