On Fri, 01 Dec 2017 19:07:01 -0700
Larry Leszczynski <lar...@emailplus.org> wrote:

> Hi all -
> 
> I have triggers set up on two attributes that check if their values
> are consistent with each other.  I'm worried that since triggers get
> called during construction when the values are passed in, it will try
> to do the check before both of those attributes have been set.  I
> kinda only want to do the check inside BUILD (at which point I know
> everything has been set), or later on when one or the other of those
> attributes changes.
> 
> I know how to call my checking code both from inside BUILD and as a
> trigger, what I don't know is how to make the trigger *not* fire
> during the initial construction... which makes me wonder whether
> there is a different/better way to do it without using triggers.
> 
> For purposes of discussion assume I have an attribute "color" which
> can be red/blue/green, and another attribute "size" which can be
> small/medium/large, and that any combination of color and size is ok
> except I want to croak if you try to use color "red" with size
> "small". 
> 
> 
> Thanks!
> Larry

Howdy Larry L.,

Take a look at some old blog posts from nothingmuch:
http://blog.woobling.org/2009/08/moose-triggers.html

In a nutshell: consider doing the check only during BUILD, avoid
mutable state, make a separate class to contain those attributes and
rebuild it as needed, or make the attributes private and provide a more
sophisticated method for altering them that does the check explicitly.

HTH,
nperez

Reply via email to