|
dependency mechanism: msg#00283lang.smalltalk.squeak.beginners
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
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | RadioButton's, Andreas Blüher |
|---|---|
| Next by Date: | Update very long, mathieu |
| Previous by Thread: | RadioButton's, Andreas Blüher |
| Next by Thread: | Re: dependency mechanism, Hilaire Fernandes |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |