I would have assumed that a pre/post/invariant would not be used regularly,
but rather under optional control. So this would lose that feature.

<chaim>

>>>>> "DC" == Damian Conway <[EMAIL PROTECTED]> writes:

>> So if all I want to do is make sure that certain attributes are positive
>> integers, I have to do this:
>> 
>> [ admittedly ungainly solutions snipped ]
>> 
>> I'd much prefer a solution where the positive-only logic was in a method
>> belonging to the class, rather than being attached to afflicted attributes.
>> The only ways I can see of doing this are like Gnat or Andy's RFCs.

DC> TMTTWTDO! ;-)

DC> What you really want is a postcondition or class invariant.
DC> One that asserts that x is always positive:

DC>    sub new { bless {}, $_[0] }
DC>    sub x   { lreturn $_[0]->{x} }

DC>    # and one of...

DC>    post x  { $_[0]->{x} >= 0 }              # post condition on x attribute
DC>    ensure  { $_[0]->{x} >= 0 }              # class invariant
        



-- 
Chaim Frenkel                                        Nonlinear Knowledge, Inc.
[EMAIL PROTECTED]                                               +1-718-236-0183

Reply via email to