Ok, thanks for the explanations!
But...now that you mention the concatenator... I will comment another 
problem in this entry. (I write all the code, ven though perhaps you 
don't need it)

The problem here is that the re- definition ot a class (LotteryDraw) 
doesn't seem to see the attributes of the first definition.

I have the class ot the lottery ticket:
***********************
class LotteryTicket
  NUMERIC_RANGE = 1..25
  attr_reader :picks

  def initialize( *picks )
    [...]
    @picks = picks
  end

  def score( final )
    count = 0
    final.picks.each do |note|
      count +=1 if picks.include? note
    end
    count
  end

end

*****************************
Now I have the lottery draw, where I store the buyers of the tickets:
**********************
class LotteryDraw
  @@tickets = {}
   def LotteryDraw.buy( customer, *tickets )
     unless @@tickets.has_key?( customer )
       @@tickets[customer] = []
     end
     @@tickets[customer] += tickets
   end
end
*******
And NOW, I REDEFINE THE CLASS with the concatenator, adding a new class 
method:
********************
class << LotteryDraw
   def play
     final = LotteryTicket.new_random
     winners = {}
     @@tickets.each do |buyer, ticket_list|
       ticket_list.each do |ticket|
         score = ticket.score( final )
         next if score.zero?
         winners[buyer] ||= []
         winners[buyer] << [ ticket, score ]
       end
     end
     @@tickets.clear
     winners
   end
 end
********

And now I execute the following:
************************
LotteryDraw.buy('JuanMi',
     LotteryTicket.new( 12, 6, 19 ),
     LotteryTicket.new( 5, 1, 3 ),
     LotteryTicket.new( 24, 6, 8 ))

LotteryDraw.buy('Da',
     LotteryTicket.new( 18, 4, 7 ),
     LotteryTicket.new( 21, 25, 3 ),
     LotteryTicket.new( 12, 17, 19 ))

LotteryDraw.play.each do |winner, tickets|
  puts winner + "won on " + tickets.length + " ticket(s)!"
    tickets.each do |ticket, score|
      puts "\t" + ticket.picks.join( ', ' ) + ": " + score
    end
 end
************************************

And an exception arises:
in `play': uninitialized class variable @@tickets in Object.
This exception appears in the trace:
- LotteryDraw.play.each do |winner, tickets|,
- @@tickets.each do |buyer, ticket_list| (in LotteryDraw.play)

What is the problem? Thanks (and sorry if this is very long :()

-- 
Posted via http://www.ruby-forum.com/.