Для этого нет встроенной функции, так как может быть несколько определений того, что вы подразумеваете под «размерностью» для массива. Массивы Ruby могут содержать что угодно, включая хэши или другие массивы. Вот почему я считаю, что для этого вам нужно реализовать собственную функцию.
Предполагая, что под измерением вы подразумеваете "самый глубокий вложенный уровень массивов", это должно сработать:
def get_dimension a
return 0 if a.class != Array
result = 1
a.each do |sub_a|
if sub_a.class == Array
dim = get_dimension(sub_a)
result = dim + 1 if dim + 1 > result
end
end
return result
end
РЕДАКТИРОВАТЬ: и так как ruby - отличный язык и позволяет вам делать некоторые интересные вещи, вы также можете сделать get_dimension методом Array:
class Array
def get_dimension
... # code from above slightly modified
end
end