> On Sun, Mar 3, 2019 at 11:09 AM ToddAndMargo via perl6-users
> <perl6-users@perl.org <mailto:perl6-users@perl.org>> wrote:
>
> Hi All,
>
> I want to pass an integer to a sub. The only
> valid values of the integer are 1, 2, 4, 8, and 16.
>
> Other than using "if" to test their values, is
> there a way to state that an integer can only
> have certain predefined values?
>
> Many thanks,
> -T
>
On 3/3/19 2:16 AM, Fernando Santagata wrote:
Hi Todd,
is this what you're looking for?
sub mysub(Int $value where * ~~ 1|2|4|8|16)
{
say "Got $value"
}
mysub 2; # Got 2
mysub 3; # Constraint type check failed in binding to parameter
'$value'; expected anonymous constraint to be met but got Int (3)
> --
> Fernando Santagata
Hi Fernando,
Perfect! Thank you!
That way I can catch bad values at compile time and not have
to wait and see what it gets fed.
In my usage, I will be sending the number of bytes to extract
a "little enders" from a Buf.
-T