Mikko Ahonen wrote:
Hmm, here follows a question about controlling the order of initialization.
For example, let's assume we want to create a radio button group with
individual radio buttons as kids. The invidual radio buttons are
generated automatically based on the arguments passed to make-instance
of the radio button groups.
Thus, the kids are generated in the initialize-instance of the radio
button group. They must get created before call to apply-next-method.
The problem is that when I generate the child here, it wants to read
stuff from the parent, which is not yet completely initialized. For
example, it wants to read which kid is selected (parent's selected cell)
before any kids even exist!
I guess this is more generic problem of controlling the order of
initialization of children, and perhaps delaying it until after the
initialization of the parent. How do people usually go about doing this?
I can think of some work-arounds. For example set parent's selected cell
to nil, and then ignore this value in kids. Or define some new state
cell in the parent, which children watch for.
But isn't this a quite generic need in cells programs?
Yes, and in the first few days I suspected this (instances coming and
going while being interdependent) was where the apparent wonderfulness
of Cells would fall apart. :) When it didn't I had another reason to
suspect we were onto something Deeply Correct.
But you do have to stay with the Cells paradigm, and it sounds like you
are just a bit outside that if you are making kids in initialize-instance.
Instead, make them in a rule on the kids slot of family. But "kids" was
generalized recently so you can also make them in a rule on any slot for
which you also specify ":owning t", a Cells extension.
There should be a pile of examples in the test code.
kt
_______________________________________________
cells-devel site list
cells-devel@common-lisp.net
http://common-lisp.net/mailman/listinfo/cells-devel