[Newbies] dependency mechanism
Hilaire Fernandes
hilaire at ext.cri74.org
Wed May 31 20:18:59 UTC 2006
What about using the methods: #triggerEvent:with: and #when:send:to:
obj when: #price send: #updatePrice: to: anObject2
obj triggerEvent: #price with: oldPrice
where
Object2>>updatePrice: aPrice
Hilaire
Chris Kassopulo a écrit :
> Greetings,
>
> The basic dependency example from "Smalltalk By Example" uses
> Visualworks changed:with and update:with:from: methods like this:
>
> price: aPrice
> | oldPrice |
> oldPrice := self price.
> price := aPrice.
> self changed: #price with: oldPrice
>
> update: aSymbol with: oldPrice from: aStock
> (aSymbol == #price) ifTrue:
> [Transcript
> cr; show: thisContext; tab; show: aSymbol; tab;
> nextPutAll: 'Price changed from: '; show: oldPrice; tab;
> nextPutAll: 'To: '; show: aStock price; flush]
>
> The problem is that Squeak only implements update:with: so the
> aStock price messaging doesn't work. My solution was to follow
> VW's implementation by making the following changes:
>
> Modified the changed:with: method to include from:.
>
> changed: anAspect with: anObject
> self dependents do: [:aDependent | aDependent update: anAspect with:
> anObject from: self]
>
> Added an update:with:from: method.
>
> update: anAspect with: anObject from: aSender
> ^ self update: anAspect with: anObject
>
> It took a while to see the problem and without looking at VW,
> I never would have been able to figure a way. Is my fix
> reasonable?
>
> VW also implements expressInterestIn:for:sendBack: and
> onChangeSend:to: methods. Anyone familiar with them and care to
> provide pointers on the possibility of implementing something
> similar in Squeak?
>
> Thanks,
> Chris
>
>
> _______________________________________________
> Beginners mailing list
> Beginners at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/beginners
>
More information about the Beginners
mailing list