Newbie question (Array.<<)

I must be missing something...

I've got the following class method. The problem is the line that reads objs
<< self.new(obj). The first time through the loop, the objs array looks
correct. After the second iteration however, the objs array contains 2
copies of the second object created.

Here is the output from the method:

"00630000003BqXwAAK"
[00630000003BqXwAAK]
"00630000003awD3AAI"
[00630000003awD3AAI, 00630000003awD3AAI]

and here is the method:

    def FindAll(criteria)
      self.GetAllFields if (defined? @@attribs) == nil
      result = @@connection.query([:query, "select #{@@attribs} from #{
self.to_s} where #{criteria}"])
      objs = []
      result.queryResponse.result.records.each do |obj|
        p obj.Id
        objs << self.new(obj)
        p objs
      end
      objs
    end

Thanks!

Todd Breiholz

[Todd Breiholz <talanb@gmail.com>, 2006-01-08 04.15 CET]

I must be missing something...

I've got the following class method. The problem is the line that reads objs
<< self.new(obj). The first time through the loop, the objs array looks
correct. After the second iteration however, the objs array contains 2
copies of the second object created.

Here is the output from the method:

"00630000003BqXwAAK"
[00630000003BqXwAAK]
"00630000003awD3AAI"
[00630000003awD3AAI, 00630000003awD3AAI]

and here is the method:

    def FindAll(criteria)
      self.GetAllFields if (defined? @@attribs) == nil
      result = @@connection.query([:query, "select #{@@attribs} from #{
self.to_s} where #{criteria}"])
      objs =
      result.queryResponse.result.records.each do |obj|

Probably this object is being reused ----------------^^^

Look at the documentation (or source code) of the method that does the
iteration.

Good luck.

···

        p obj.Id
        objs << self.new(obj)
        p objs
      end
      objs
    end

Thanks!

Todd Breiholz

[Todd Breiholz <talanb@gmail.com>, 2006-01-08 04.15 CET]

I must be missing something...

I've got the following class method. The problem is the line that reads objs
<< self.new(obj). The first time through the loop, the objs array looks
correct. After the second iteration however, the objs array contains 2
copies of the second object created.

Here is the output from the method:

"00630000003BqXwAAK"
[00630000003BqXwAAK]
"00630000003awD3AAI"
[00630000003awD3AAI, 00630000003awD3AAI]

and here is the method:

    def FindAll(criteria)
      self.GetAllFields if (defined? @@attribs) == nil
      result = @@connection.query([:query, "select #{@@attribs} from #{
self.to_s} where #{criteria}"])
      objs =
      result.queryResponse.result.records.each do |obj|
        p obj.Id
        objs << self.new(obj)

Or, more probably ^^^^^^^^ here is the problem :). Try self.class.new if you
want a new object of the same class as self.

···

        p objs
      end
      objs
    end

Thanks!

Todd Breiholz