Anton Antonov Hi! I think there should be a more direct and concise way to do following check: `‌‌[and] ['dfd', 1, 2, NaN, 32, Whatever].map({ $_ ~~ Numeric or $_ ~~ NaN })` . I want to verify that the elements of an array are one of two possible classes/objects. I tried coming up with an `.all` statement without much success. E.g. `[1, 2, 32, NaN] ~~ (Numeric | NaN)`. 17:41
Hi! I think there should be a more direct and concise way to do the following check: `‌‌[and] ['dfd', 1, 2, NaN, 32, Whatever].map({ $_ ~~ Numeric or $_ ~~ NaN })` . I want to verify that the elements of an array are one of two possible classes/objects. I tried coming up with an `.all` statement without much success. E.g. `[1, 2, 32, NaN] ~~ (Numeric | NaN)`.
Hi! I think there should be a more direct and concise way to do the following check: `‌‌[and] ['dfd', 1, 2, NaN, 32].map({ $_ ~~ Numeric or $_ ~~ NaN })` . I want to verify that the elements of an array are one of two possible classes/objects. I tried coming up with an `.all` statement without much success. E.g. `[1, 2, 32, NaN] ~~ (Numeric | NaN)`.
Bearhug ```perl 17:55
> [1,2,32,NaN].all ~~ (Numeric | NaN)
True
> [1,'s',32,NaN].all ~~ (Numeric | NaN)
False
> [].all ~~ (Numeric | NaN)
True
```
Anton Antonov Hi! I think there should be a more direct and concise way to do the following check: `‌‌[and] ['dfd', 1, 2, NaN, 32].map({ $_ ~~ Numeric or $_ ~~ NaN })` . I want to verify that the elements of an array are one of two possible classes/objects. I tried coming up with an `.all` statement without much success. E.g. `[1, 2, 32, NaN].all ~~ (Numeric | NaN)`. 18:07
@Bearhug#1761 No, that does not work -- I tried that. (I pasted incorrect code in my question above, it is corrected now.) To see that it does not work try this: `‌‌['dfd', 1, 2, 32, NaN].all ~~ (Str | Numeric | NaN)` . 18:11
@Bearhug#1761 No, that does not work -- I tried that. (I pasted incorrect code in my question above, it is corrected now.) To see that it does not work try this: `‌‌['dfd', 1, 2, 32, NaN].all ~~ (Str | Numeric | NaN)` . (Gives `False`.) 18:12
gfldex m: say NaN.WHAT; 18:52
@Anton Antonov#7232 NaN is not a typeobject. You have to use `.isNaN` . 18:53
m:``` 18:55
subset StrNumeric where * ~~ Str | Numeric;
say ('dfd', 1, 2, NaN, 32).all ~~ StrNumeric;
```
Any fancy type check is best placed inside a subset.
Morfent `['dfd', 1, 2, 32, NaN].all ~~ (Str | Numeric | NaN)` doesn't work because it expands to `(.all ~~ Str) | (.all ~~ Numeric) | (.all ~~ NaN)` 18:58
Anton Antonov @Morfent#9811 Thanks, that clarifies it. 19:00