Jump to content

Overlays: Difference between revisions

No change in size ,  17 February 2019
m
Reword the description of the overlay graph
imported>Dramforever
(Add section on data flow with illustration)
imported>Dramforever
m (Reword the description of the overlay graph)
Line 19: Line 19:
[[File:Dram-overlay-self-super.png]]
[[File:Dram-overlay-self-super.png]]


Here the main package set is extended with two overlays, ext-1 and ext-2. <tt>a // b</tt> is represented by a <tt>//</tt> box with <tt>a</tt> coming in from the left and <tt>b</tt> from above.
Here the main package set is extended with two overlays, ext-1 and ext-2. <tt>x // y</tt> is represented by a <tt>//</tt> box with <tt>x</tt> coming in from the left and <tt>y</tt> from above.


As you can see, <tt>self</tt> is the same for every stage, but <tt>super</tt> comes from only the stage before. So when you define an attribute <tt>foo</tt> in the set to override it, within that overlay <tt>self.foo</tt> will be it's version, and <tt>super.foo</tt> will be the non-overriden version. This is why you see patterns like <tt>foo = super.foo.override { ... }</tt>.
As you can see, <tt>self</tt> is the same for every stage, but <tt>super</tt> comes from only the stage before. So when you define an attribute <tt>foo</tt> in the set to override it, within that overlay <tt>self.foo</tt> will be it's version, and <tt>super.foo</tt> will be the non-overriden version. This is why you see patterns like <tt>foo = super.foo.override { ... }</tt>.
Anonymous user