###########################################
# 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?
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
···
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?