Why does each traverse into the inner arrays as well (tried it with 3
and 4 deep?)
Array#length seems to be correct to me and Array#each_index
This seems to happen to collect!, and I'd gather other methods as well.
Convenient, if you want depth first traversal on all arrays. but what
if you just want to iterate in a shallow manner?
Thanks
Ed
:-)
> --- Ursprüngliche Nachricht ---
> Von: Ed Howland <ed.ho...@gmail.com>
> An: ruby...@ruby-lang.org (ruby-talk ML)
> Betreff: Nuby Array questions - each iterates nested arrays?
> Datum: Thu, 27 Oct 2005 02:16:39 +0900
Actually, it doesn't. It just looks that way because of the way 'puts'
works with arrays. Try 'ruby -e "puts [1,2,3]"' to see what I mean.
See the docs on IO.puts for more details.
To see what's really happening replace 'puts' with 'p' (inspect) in your
example.
Regards,
Dan
class Array
def each_recursive(&block)
each do |x|
if Enumerable === x
x.each_recursive(&block)
else
yield x
end
end
end
end
a=[[1, 2, 3], [4, 5, 6]]
a.each_recursive { |x| p x}
> --- Ursprüngliche Nachricht ---
> Von: "Peter Ertl" <pe...@gmx.org>
> An: ruby...@ruby-lang.org (ruby-talk ML)
> Betreff: Re: Nuby Array questions - each iterates nested arrays?
> Datum: Thu, 27 Oct 2005 02:22:44 +0900
> Why does each traverse into the inner arrays as well (tried it with 3
> and 4 deep?)
This does not happen, but the puts makes it seem so. What really
happens is this:
=> puts [1, 2, 3]
1
2
3
=> puts [4, 5, 6]
4
5
6
Try p though:
=> [[1, 2, 3], [4, 5, 6]].each {|x| p x}
[1, 2, 3]
[4, 5, 6]
Greetings,
Markus