Les documents indique que "la manière la plus simple d'exécuter un bloc lorsqu'il ne peut pas être une déclaration autonome est d'écrire do
avant elle" et donne l'exemple suivant :
# This dies half of the time
do { say "Heads I win, tails I die."; Bool.pick } or die; say "I win.";
Cependant, do
ne semble pas entraîner l'exécution de tous les blocs. En particulier, il ne semble pas exécuter les blocs comportant une signature :
do -> $a = 42 { say "ran with $a"; 0 } or die; say 'done'; # OUTPUT: «done»
Serait-il donc préférable de dire que do
traite un bloc comme une expression qui parfois le fait fonctionner ? Ou bien le comportement de Rakudo est-il incorrect ? Ou ma compréhension est-elle erronée ?