我想检查array
是否包含Array
个实例的元素。我可以创建一个递归函数,并迭代并查找Array
的所有元素。有没有更短的方法来做到这一点?
获取x类型的所有元素并对其进行操作(即修改或删除它们)
答案 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