I’m trying to use a modified version of this > list.inject(Hash.new(0))
{ |h, x| h[x] += 1; h}< to create a @categories containing “name”, “id”
and “count”.
This is a sample of many things I have tried. (I clearly don’t
understand how this command works)
I can’t quite figure out how to set up the inject command to do what I
want. (or if it’s even possible)
…
(I clearly don’t understand how this command works)
I’m not sure how you ultimately want your data formated, but it’s true
you don’t understand how inject works.
I’ll try and explain it.
Inject is basically an accumulator method. Here’s a simple example…
[ 5, 10, 15 ].inject(0) { |sum, i| sum += i } # 30
First, inject operates on a collection, as you’re doing, so you’re good
there. Second, the argument to inject (zero) is given to the variable
sum. Third, the first value in your collection (5) is given the variable
i. We then add sum and i together. Sum is essentially the sum of our
entire operation.
But you can use inject for other things. It mostly depends on what your
enumerating over, and what you assign to the first variable in the
pipes.
Example of adding to an array…
[ ‘rabbit’, ‘bunny’, 5 ].inject([]) { |sum, i| sum << i } # [ ‘rabbit’,
‘bunny’, 5 ]
In this case we ended up with exactly what we put in, but that’s okay.
I’m just showing you how you can use inject.