Re: valid values?

2019-03-03 Thread Brad Gilbert
The `where` clause is already a smart-match, adding `~~` to it is not only redundant, it can cause confusing action at a distance. (By that I mean the right side of `where` is exactly the same as the right side of `~~`) You wouldn't write this: * ~~ (* ~~ 1|2|4|8|16) So don't write this

Re: valid values?

2019-03-03 Thread Fernando Santagata
On Sun, Mar 3, 2019 at 11:41 AM ToddAndMargo via perl6-users < perl6-users@perl.org> wrote: > That way I can catch bad values at compile time and not have > to wait and see what it gets fed. > The snippet I showed you doesn't intercepts wrong values at compile time, but rather at run time. --

Re: valid values?

2019-03-03 Thread Fernando Santagata
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) On Sun, Mar 3, 2019 at 11:09 AM

valid values?

2019-03-03 Thread ToddAndMargo via perl6-users
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 -- ~~~ Having been