使用可枚举的内置 Ruby 访问和操作嵌套数据

using an enumerable built-in Ruby to access and manipulate nested data

是否有一个内置程序可以让您轻松访问数组及其子数组中的对象,从而可以实现以下目标:

array = [5, 10, [15, 20], 25, [30, 35, 40]
array#method { #block that adds 5} => [10, 15, [20, 25], 30, [35, 40, 45]

我不关心它是否具有破坏性。

您可以使用递归 lambda:

add_five = lambda { |e| e.is_a?(Enumerable) ? e.map(&add_five) : e + 5 }
new_array = array.map(&add_five)

调整 e.is_a?(Enumerable) 测试以符合您的情况,e.is_a?(Array) 会更严格,但可能没有必要。