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
···
--
Posted via http://www.ruby-forum.com/.
Take a look at Enumerable, specifically #inject.
···
On 2006.10.03 01:45, Wes Gamble wrote:
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
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?
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 Tue, Oct 03, 2006 at 01:45:19AM +0900, Wes Gamble wrote:
Thanks,
Wes
--
Posted via http://www.ruby-forum.com/\.
filter_columns = displayable_columns.inject( {|
···
On 10/2/06, Wes Gamble <weyus@att.net> wrote:
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?
--
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]
Wes Gamble wrote:
···
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
--
Posted via http://www.ruby-forum.com/\.
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]]}
···
On 10/2/06, Rick DeNatale <rick.denatale@gmail.com> wrote:
On 10/2/06, Wes Gamble <weyus@att.net> wrote:
> 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?
filter_columns = displayable_columns.inject( {|
--
Rick DeNatale
My blog on Ruby
http://talklikeaduck.denhaven2.com/
Timothy Goddard 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
···
--
Posted via http://www.ruby-forum.com/\.
Okay, one last try
or assuming that field_array contains two element arrays:
displayable_columns.inject() {|result, field_array| result <<
field_array.reverse}
···
On 10/2/06, Rick DeNatale <rick.denatale@gmail.com> wrote:
On 10/2/06, Rick DeNatale <rick.denatale@gmail.com> wrote:
--
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/
I like this way:
filter_columns = displayable_columns.map {|(a,b)| [b,a] }