每个都是多维的

Rya*_*wis 5 ruby multidimensional-array

我怎么做下面这样的事情?

[
    'foo'
    ['bar', 'baz'],
    [
        'one',
        ['two', 'three']
    ]
].each { |word| puts word }

# I want this to return:

foo
bar
baz
one
two
three
Run Code Online (Sandbox Code Playgroud)

Eva*_*ter 2

如果您不想展平数组并仍然实现所需的功能,您可以执行以下操作:

irb(main):016:0> array = [1, [2, 3], [4, [5, 6]]]
=> [1, [2, 3], [4, [5, 6]]]
irb(main):017:0> (traverser = lambda { |list| list.respond_to?(:each) ? list.each(&traverser) : puts(list) })[array]
1
2
3
4
5
6
=> [1, [2, 3], [4, [5, 6]]]
Run Code Online (Sandbox Code Playgroud)