如何检查数组中的任何元素是否也是一个数组

时间:2015-08-14 00:23:11

标签: ruby

我想检查array是否包含Array个实例的元素。我可以创建一个递归函数,并迭代并查找Array的所有元素。有没有更短的方法来做到这一点?

获取x类型的所有元素并对其进行操作(即修改或删除它们)

2 个答案:

答案 0 :(得分:4)

可以这样做:

array.any?{|e| e.is_a?(Array)}

答案 1 :(得分:0)

这是一种可能的解决方案,
您可以使用Ruby blocks作用于子阵列&嵌套的子数组递归。

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

def act_on_array(arr, block) 
    arr.each do |i|  
        if i.is_a?(Array) then
            block.yield(i)
            act_on_array(i, block)
        end
    end 
end

act_on_array(arr, lambda {|x| puts "I should act on #{x} as it is an array" })

节目输出

I should act on [2, 3] as it is an array
I should act on [4, [5, 6]] as it is an array
I should act on [5, 6] as it is an array