[Newbies] dependency mechanism
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
Chris Kassopulo a écrit :
> 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:
> 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
> 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?
> Beginners mailing list
> Beginners at lists.squeakfoundation.org
More information about the Beginners