On Wed, Feb 15, 2017 at 6:43 PM, denker <marcus.denker@inria.fr> wrote:
On 15 Feb 2017, at 11:24, denker <marcus.denker@inria.fr> wrote:
On 15 Feb 2017, at 10:56, Ben Coman <btc@openinworld.com> wrote:
On Wed, Feb 15, 2017 at 3:38 PM, Alistair Grant <akgrant0710@gmail.com> wrote: I'm developing a number of classes where it would be convenient to be able to inspect what might be described as calculated attributes, i.e. the result of a unary message send. The result isn't stored in an instance variable, but is still useful when inspecting.
I can obviously develop an inspector extension for my application, but was wondering if there is a framework in place that allows a list of attributes to be declared that can also be inspected in a similar fashion to normal instance variables.
Many thanks to Doru and everyone who has contributed to the GT Inspector framework. It has significantly influenced my development and the architecture of the software I'm currently working on (in a positive way, of course).
Would it be feasible to have a "CalculationSlot" that was read only, and each time it was read it performed the calculation?
Using a âvirtualâ slot would be possible⦠it would look like a instance variable, (you can read from it and the calculation is done).
I added this as an example to the Slot package:
https://pharo.fogbugz.com/f/cases/19709/add-example-ComputedSlot
Changes: - Name is âComputedSlotâ - added #= and #hash so changing the block is possible in the class definition - do not raise error but ignore writes to not interfere with object migration done by the class builder (e.g. when adding an ivar).
I will add that as an example to the image.
Very cool !! A good example would be calculation based on other instance variables. I took a guess... Object subclass: #TT slots: { #i. #j => VirtualSlot with: [ :o | o i + 1 ] } classVariables: { } category: 'AAAA' TT>> i ^i ifNil: [i:=0] TT>> i: i: number i := number TT>> j ^j In Playground... (tt := TT new) inspect. (tt i: 4) inspect. cheers -ben