You could use the @ sigil for your files variable, too. Then you can just "for @files". There's two ways to get that to work:
my Str @files = "Test", "Test 2"; or my @files := Array[Str].new("Test", "Test 2"); Hope to help - Timo On 13/02/2019 13:29, Mikkel wrote: > Hello. (recurring noob-question here) > > I seem always seem to get myself confused with Arrays/Typed Arrays. > Can I ask of you to explain why the 'for' loop does not work without > .flat? It seems so counter intuitive.... > > > my Array[Str] $files; > (Array[Str]) > > > $files.push("Test"); > [Test] > > > $files.push("Test 2"); > [Test Test 2] > > > for $files -> Str $f {.say} > Type check failed in binding to parameter '$f'; expected Str but got > Array[Str] (Array[Str].new("Test", "Test 2")) > in block <unit> at <unknown file> line 1 > > Best regards > Mikkel Birkedam