Re: RFC 118 (v1) lvalue subs: parameters, explicit assignment, andwantarray() changes
[email protected] (Damian Conway) Thu, 24 Aug 2000 05:38:33 +1000 (EST)
| Newsgroups | perl.perl6.language.subs |
|---|---|
| Message-ID | <[email protected]> |
> 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.
TMTTWTDO! ;-)
What you really want is a postcondition or class invariant.
One that asserts that x is always positive:
sub new { bless {}, $_[0] }
sub x { lreturn $_[0]->{x} }
# and one of...
post x { $_[0]->{x} >= 0 } # post condition on x attribute
ensure { $_[0]->{x} >= 0 } # class invariant
Damian