J'ai un tableau pour lequel le test suivant renvoie true: et pourtant, le test suivant renvoie false: p> J'ai lu apprendre Perl i> que le placement des valeurs de part et d'autre de l'opérateur SmartMatch n'a pas d'importance, mais évidemment dans le code ci-dessus, il fait. Pourquoi donc? Les deux déclarations vérifient-elles différentes choses? P> P>
4 Réponses :
Si apprendre Perl em> dit que, c'est faux Strike> obsolète (bien qu'il a tendance à travailler de cette façon dans de nombreux cas). Ce que l'opérateur de correspondance intelligente est principalement déterminé par le type du bon argument; Voir la table dans La documentation PerlSyn pour des détails. P >
@Brian Roach: Hah, je viens de lire cela à Perl5101Delta tout en essayant de déterminer ce que @a ~~ 1 code> fait exactement.
Vous pouvez voir qu'il fait des choses très différentes en fonction de la commande et des types de ses arguments si vous allez sur Smart correspondant en détail . P>
En fait, cela a également changé en 5.10.1.
La version de ~~ in 5.10.0 était basée sur la conception de Perl6 actuelle, qui était commutative. Parce que 5.10.0 a pris si longtemps à être libéré, au moment de sa sortie, le Perl6 SmartMatch avait été grandement amélioré (n'incluant plus la commutative), mais personne du développement de PERL5 remarqua à temps pour réparer la mise en œuvre de PERL5. Il a été fixé en 5.10.1 et personne ne devrait compter sur les plus âgés de 5,10,0 règles. C'est une nouvelle pour moi que le comportement incompatible a été documenté dans un livre imprimé. P>
Learning-Perl.com/?p=32