Hi, If you really want to avoid `Array[Str].new`, you can do something like this:
sub foo (@a where .all ~~ Str) {...} On 2017-01-07 11:45:55 GMT, Fernando Santagata wrote: > Hello, > > I have a function like this: > > sub test(Str :$format, :@filter) > { > say $format; > say @filter; > } > > and I wish to have a stricter type control over the second parameter. > > The natural way to do it seemed this: > > sub test(Str :$format, Array[Str] :$filter) > { > say $format; > say $filter; > } > > but then I have to call it this way: > > test format => 'gnutar', filter => Array[Str].new('gzip', 'uuencode'); > > Is there a less cumbersome way to do it? > > Obviously this doesn't work: > > test format => 'gnutar', filter => <gzip uuencode>; > > because the argument is interpreted as a generic List. > This doesn't work either: > > test format => 'gnutar', filter => ['gzip', 'uuencode']; > > because it's interpreted as a generic Array, not an Array[Str]. > > Thank you!