在ruby中获取多维数组的维度

前端之家收集整理的这篇文章主要介绍了在ruby中获取多维数组的维度前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我刚开始学习ruby.
现在我需要弄清楚多维数组的维度.我查看了所有数组方法ruby-docs,但我找不到返回维度的方法.

这是一个例子:

对于[[1,2],[3,4],[5,6]],维度应为2.

对于[[[1,[2,3]],[[3,[5]]],维度应为3.

解决方法

没有内置函数,因为对于数组的“维度”,您可能有多个定义. 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

猜你在找的Ruby相关文章