Bonjour,
Voici un petit effet de bord auquel je ne m'attendais pas, et dont je ne comprends pas vraiment la raison;
donne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 #!/usr/bin/env perl6 use v6; my %hash; my $i=0; for 1..3 { $i++; %hash{$_}=($i,"$i"); } say %hash;
Le $i est donc passé en référence et non par valeur, contrairement à "$i".
Code : Sélectionner tout - Visualiser dans une fenêtre à part {1 => (3 1), 2 => (3 2), 3 => (3 3)}
Un fois qu'on sait et qu'on accepte qu'on passe la référence, ça va. Mais pourquoi passe-t-on la référence... je trouve cela bizarre.
Et en effet en perl5
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #!/usr/bin/perl use v5.10; use Data::Dump qw(dump); my %hash; my $i=0; for (my $j=1;$j<=3;$j++) { $i++; $hash{$j}=($i,"$i"); } say dump(%hash);
Code : Sélectionner tout - Visualiser dans une fenêtre à part (2, 2, 1, 1, 3, 3)
Partager