Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > Loop improvement

Reply
Thread Tools

Loop improvement

 
 
EdUarDo
Guest
Posts: n/a
 
      08-17-2005
Hi all, I have this code:


class Test
def testA
home_squad = home.squad.to_a
###########################################
# Could improve this?
###########################################
for i in 0...11
home.tactic.set_player(i, home_squad[i][0])
end
end
end

class Tactic
def set_player(counter_id, player_id)
@counters[counter_id].player_id = player_id
end
end

Having that home.squad is a Hash object, and @counters an Array,
is there an easy way to do what I'm trying to do?

In loop for of testA method I want to change the player_id attribute of
objects contained in @counters array. Could I define an iterator to simplify
the sentence?


 
Reply With Quote
 
 
 
 
James Edward Gray II
Guest
Posts: n/a
 
      08-17-2005
On Aug 17, 2005, at 9:41 AM, EdUarDo wrote:

> Hi all, I have this code:
>
>
> class Test
> def testA
> home_squad = home.squad.to_a
> ###########################################
> # Could improve this?
> ###########################################
> for i in 0...11
> home.tactic.set_player(i, home_squad[i][0])
> end
> end
> end
>
> class Tactic
> def set_player(counter_id, player_id)
> @counters[counter_id].player_id = player_id
> end
> end
>
> Having that home.squad is a Hash object, and @counters an Array,
> is there an easy way to do what I'm trying to do?
>
> In loop for of testA method I want to change the player_id
> attribute of
> objects contained in @counters array. Could I define an iterator to
> simplify
> the sentence?


Here's one thought:

class Test
def testA
home_squad = home.squad.to_a
home_squad.each_with_index do |squad, i|
home.tactic.set_player(i, squad.first)
end
end
end

class Tactic
def set_player(counter_id, player_id)
@counters[counter_id].player_id = player_id
end
end

Another idea it to expose the @counters from Tactic:

class Test
def testA
home_squad = home.squad.to_a.map { |e| e.first }
home.tactic.counters.each { |c| c.player_id =
home_squad.shift }
end
end

class Tactic
attr_reader :counters
end

Or, you could delegate the iteration:

class Test
def testA
home_squad = home.squad.to_a.map { |e| e.first }
home.tactic.players { |c| c.player_id = home_squad.shift }
end
end

class Tactic
def players( &block )
@counters.each(&block)
end
end

Hope that gives you some new ideas.

James Edward Gray II


 
Reply With Quote
 
 
 
 
EdUarDo
Guest
Posts: n/a
 
      08-17-2005
James Edward Gray II wrote:
> Hope that gives you some new ideas.


All are good ideas. Sometimes I need to cry because of my rigid brain ,
well, I think I need more experience with Ruby.
 
Reply With Quote
 
EdUarDo
Guest
Posts: n/a
 
      08-17-2005
> home_squad = home.squad.to_a.map { |e| e.first }

Which is the e's class?
 
Reply With Quote
 
Brian Schröder
Guest
Posts: n/a
 
      08-17-2005
On 17/08/05, EdUarDo <(E-Mail Removed)> wrote:
> > home_squad =3D home.squad.to_a.map { |e| e.first }

>=20
> Which is the e's class?
>=20
>=20


You could ask ruby for an answer:

home_squad =3D home.squad.to_a.map { |e| p e.class; e.first }

should give you the answer (multiple times even

regards,

Brian

--=20
http://ruby.brian-schroeder.de/

Stringed instrument chords: http://chordlist.brian-schroeder.de/


 
Reply With Quote
 
James Edward Gray II
Guest
Posts: n/a
 
      08-17-2005
On Aug 17, 2005, at 10:11 AM, EdUarDo wrote:

>> home_squad = home.squad.to_a.map { |e| e.first }
>>

>
> Which is the e's class?


Whatever the class of home_squad[n] is. map() just walks the Array,
replacing the elements.

It looked like an Array to me, by the way you were using it.

James Edward Gray II



 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Triple nested loop python (While loop insde of for loop inside ofwhile loop) Isaac Won Python 9 03-04-2013 10:08 AM
Performance improvement in the 2.0 framework =?Utf-8?B?TWFyYyBIb2Vpam1hbnM=?= ASP .Net 6 03-22-2006 07:48 PM
Improvement on website MaxMustermann HTML 9 07-25-2005 04:43 AM
IMHO: DataBinding for ASP.NET list controls needs improvement (VS.NET 2003) JV ASP .Net 4 03-18-2005 06:40 PM
Collections Improvement Disillusioned_01 MCSD 1 06-08-2004 03:29 PM



Advertisments