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 either:
… where * ~~ 1|2|4|8|16
---
It should be
sub mysub(Int $value where 1|2|4|8|16)
{
say "Got $value"
}
On Sun, Mar 3, 2019 at 4:16 AM Fernando Santagata
<[email protected]> 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)
>
> On Sun, Mar 3, 2019 at 11:09 AM ToddAndMargo via perl6-users
> <[email protected]> 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
>>
>> --
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> Having been erased,
>> The document you're seeking
>> Must now be retyped.
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
>
>
> --
> Fernando Santagata