[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Newbie question (Array.<<

Todd Breiholz

1/8/2006 3:16:00 AM

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
2 Answers

Carlos

1/8/2006 4:54:00 AM

0

[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


Carlos

1/8/2006 4:56:00 AM

0

[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