Special variable within iterators to hold results?

I have this:

FILTER_COLUMNS = Array.new
DISPLAYABLE_COLUMNS.each do |field_array|
FILTER_COLUMNS << [ field_array[1], field_array[0] ]
end

Is there any way to write this so that it could look something like:

FILTER_COLUMNS = DISPLAYABLE_COLUMNS.each do |field_array|
??? << [ field_array[1], field_array[0] ]
end

so that I don’t have to bother initializing FILTER_COLUMNS - is there
some special variable that holds the intermediate result of the iterator
body?

Or perhaps an appropriate call to collect?

Thanks,
Wes

On 2006.10.03 01:45, Wes G. wrote:

??? << [ field_array[1], field_array[0] ]
end

Take a look at Enumerable, specifically #inject.

On Tue, Oct 03, 2006 at 01:45:19AM +0900, Wes G. wrote:

??? << [ field_array[1], field_array[0] ]
end

so that I don’t have to bother initializing FILTER_COLUMNS - is there
some special variable that holds the intermediate result of the iterator
body?

Or perhaps an appropriate call to collect?

That would work:
FILTER_COLUMNS = DISPLAYABLE_COLUMNS.collect { |field_array|
[field_array[1],
field_array[0] }

Note you can also do something like:

filter_cols = disp_cols.map { |a, b, *_| [b, a] }

( map and collect are aliases of each other. )

On 10/2/06, Rick DeNatale [email protected] wrote:

FILTER_COLUMNS = DISPLAYABLE_COLUMNS.each do |field_array|
??? << [ field_array[1], field_array[0] ]
end

so that I don’t have to bother initializing FILTER_COLUMNS - is there
some special variable that holds the intermediate result of the iterator
body?

filter_columns = displayable_columns.inject([] {|

darn that itchy trigger finger.

displayable_columns.inject([]) {|result, field_array| result <<
[field_array[1], field_array[0]]}

or assuming that field_array contains two element arrays:

displayable_columns.inject([]) {|result, field_array| result <<
[field_array[1], field_array[0]]}


Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/

On 10/2/06, Rick DeNatale [email protected] wrote:

On 10/2/06, Rick DeNatale [email protected] wrote:

Okay, one last try

or assuming that field_array contains two element arrays:

displayable_columns.inject([]) {|result, field_array| result <<
field_array.reverse}


Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/


Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/

IPMS/USA Region 12 Coordinator
http://ipmsr12.denhaven2.com/

Visit the Project Mercury Wiki Site
http://www.mercuryspacecraft.com/

Firstly, you shouldn’t capitalize your variables like that. Ruby will
treat any variable with a capital first letter as a constant - it will
behave differently.

A better implementation would be:

filter_columns = displayable_columns.map {|field_array|
[field_array[1], field_array[0]]

or

filter_columns = displayable_columns.map {|field_array|
field_array[0,2].reverse]

On 10/2/06, Wes G. [email protected] wrote:

??? << [ field_array[1], field_array[0] ]
end

so that I don’t have to bother initializing FILTER_COLUMNS - is there
some special variable that holds the intermediate result of the iterator
body?

filter_columns = displayable_columns.inject([] {

Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/

IPMS/USA Region 12 Coordinator
http://ipmsr12.denhaven2.com/

Visit the Project Mercury Wiki Site
http://www.mercuryspacecraft.com/

Hi –

On Wed, 4 Oct 2006, Timothy G. wrote:

Firstly, you shouldn’t capitalize your variables like that. Ruby will
filter_columns = displayable_columns.map {|field_array|
field_array[0,2].reverse]

You could also do:

filter_columns = displayable_columns.map {|field_array|
field_array.values_at(1,0) }

David

I like this way:

filter_columns = displayable_columns.map {|(a,b)| [b,a] }

Caleb C. wrote:

I like this way:

filter_columns = displayable_columns.map {|(a,b)| [b,a] }

Nice! That wins! :slight_smile:

Thanks,
Wes

Timothy G. wrote:

Firstly, you shouldn’t capitalize your variables like that. Ruby will
treat any variable with a capital first letter as a constant - it will
behave differently.

Who said it wasn’t a constant ;)? It’s a set of static lookup data to
drive an options array for a SELECT form element in Rails.

Thanks for looking out for me though.

Wes

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs