On Wed, Jul 27, 2016 at 8:13 AM, Joseph Alotta joseph.alotta@gmail.com wrote:
Ben, Ron, I made a small example, and it works as you said it would:
a := #( #(1 2) #(3 4)). b := a asOrderedCollection. b => an OrderedCollection(#(1 2) #(3 4)) c := b select: [ :i | (i first) = 3 ].
Ahh. Code examples help. Maybe what you need is #detect: which returns an element rather than a collection of elements.
c => an OrderedCollection(#(3 4)) d := c first d => #(3 4) d at: 2 put: 5 d => #(3 5) b => an OrderedCollection(#(1 2) #(3 5))
Okay, I will check my other code.
Sincerely,
Joe.
Here's a domain specific example...
Object subclass: #DrivingDays instanceVariables: 'date store mileage"?" ' ...etc...
oc := OrderedCollection new. oc add: (DrivingDays new date: '2016-01-02' ; store: 'quigley' ; mileage: 18). oc add: (DrivingDays new date: '2016-01-03' ; store: 'marianos' ; mileage: 5).
oc printString.
an OrderedCollection(2016-01-02| quigley | 18, 2016-01-03| marianos | 5)
drivingDayToUpdate := oc detect: [ :dd | dd store = 'marianos' ]. drivingDayToUpdate mileage: 7.
oc printString.
an OrderedCollection(2016-01-02| quigley | 18, 2016-01-03| marianos | 7)
(disclaimer, I am not somewhere I can run this. Its just off the top of my head.) cheers -ben
On Jul 26, 2016, at 6:25 PM, Ben Coman [via Smalltalk] <[hidden email]> wrote:
Hi Joe,
As Ron said, you should not be getting a copy. If you still have a problem, perhaps best if you post code for a complete example:
- class definition (with just two instance variables)
- instance variable accessor methods
- instance creation & adding to collection
- select statement
- updating object
cheers -ben
On Wed, Jul 27, 2016 at 5:53 AM, Ron Teitelbaum <[hidden email]> wrote:
Hi Joe,
If the orderedCollection contains your object DrivingDays then select should give you the object and not a copy.
You don't need to add it back to the collection just update the object.
Check your code for anything that might be making a copy.
All the best,
Ron Teitelbaum
-----Original Message----- From: [hidden email] [mailto:[hidden email]] On Behalf Of Joseph Alotta Sent: Tuesday, July 26, 2016 3:04 PM To: [hidden email] Subject: [Newbies] indexing into a collection
Greetings,
I have a OrderedCollection of DrivingDays.
an OrderedCollection(2016-01-02| quigley s| nil|18§ 2016-01-03| marianos fresh| nil|5§ 2016-01-04| fresh thyme| nil|5§ 2016-01-05| panda express| nil|3§ 2016-01-06| peets| nil|7§ 2016-01-07| starbucks| nil|3§)
I want to select aDrivingDay object from the list by date, update it by adding mileage and places visited and put it back into the list.
If I #select the OrderedCollection, I get a copy of the item, not the same one in the OrderedCollection.
How do I select an item in the list for update?
Sincerely,
Joe.