weyus
October 2, 2006, 6:45pm
1
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
weyus
October 2, 2006, 6:53pm
2
On 2006.10.03 01:45, Wes G. wrote:
??? << [ field_array[1], field_array[0] ]
end
Take a look at Enumerable, specifically #inject .
weyus
October 2, 2006, 6:55pm
3
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. )
weyus
October 2, 2006, 11:08pm
4
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/
weyus
October 2, 2006, 11:10pm
5
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/
weyus
October 4, 2006, 1:51am
6
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]
weyus
October 2, 2006, 11:00pm
7
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/
weyus
October 4, 2006, 2:01am
8
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
weyus
October 4, 2006, 6:51am
9
I like this way:
filter_columns = displayable_columns.map {|(a,b)| [b,a] }
weyus
October 4, 2006, 7:40am
11
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