On 2012-07-10 12:05, Dmitry Olshansky wrote:

and what type has the return of map ? Let me guess - array.

Yes, and that is what I _want_. I have no need for streaming data from the network into a linked list, filter it and then convert it to an array (or something similar). I want to start with an array and end with an array.

Please count the number of allocations in your paste of Ruby.

Probably four (if you count the initial allocation for the array literal). Plus a couple for the "to_s" method.

But I can use the same methods and modify the array in place instead:

a = [5, 3, 5, 6, 8]
a.uniq!
a.map!{ |e| e.to_s }
a.sort!
p a

Prints:

["3", "5", "6", "8"]

The corresponding D version would be:

auto a = [5, 3, 5, 6, 8].uniq.map!(x => x.to!(string)).array.sort.array;
writeln(a);

I'm guessing that's three allocations. But that doesn't even work, it prints:

["3", "5", "5", "6", "8"]

--
/Jacob Carlborg

Reply via email to