$x is some attribute of some node. Associated with that attribute is a (possibly empty) list, @kabluther of callbacks to other nodes associated with this node by this attribute.Sorry, you misunderstood me. @kabluther has nothing whatsoever to do with $x or callbacks. It's just an example of some sort of processing that might occur. The example could also be
oronTime { our $pos : Attr('position'); our $active; if ($active) { $pos->[0]++; } }
The "callbacks" I was referring to are behind the scenes. Here's an example of the previous code sample, without using the new "simplified" API:onTime { our $x : Attr('something'); our @fixups; foreach (@fixups) { $x += $_; } @fixups = (); }
That's how it would be written with the current API, unless they wanted to suppress the possibly unneeded callbacks, in which case they would spell it:onTime { my $attr = $NODE->getAttr("something"); my $val = $attr->getValue(); foreach (@fixups) { $val += $_; } @fixups = (); $attr->setValue($val); $attr->doCallbacks(); }
onTime { my $attr = $NODE->getAttr("something"); my $val = $attr->getValue(); my $was_updated = 0; foreach (@fixups) { $val += $_; $was_updated = 1; } @fixups = (); if ($was_updated) { $attr->setValue($val); $attr->doCallbacks(); } }
In reply to Re^5: Quickly detecting variable writes
by sfink
in thread Quickly detecting variable writes
by sfink
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |