sort accepte en argument un bloc de code effectuant la comparaison, $a et $b correspondant aux éléments à comparer.
<=> et cmp sont les opérateurs de comparaison, respectivement numérique et lexicale ; ils rendent -1, 0 ou 1 selon le résultat de la comparaison.
Du point de vue des opérations booléennes, 0 est considéré comme faux et les autres nombres comme vrai. Par ailleurs, les opérateurs booléens (sauf !, not) rendent la valeur d’origine (et n’évaluent que leur premier argument s’il suffit à déterminer que le résultat est vrai ou faux).
Par conséquent || (ou) rend la valeur de la première comparaison si elle est non nulle et de la seconde sinon.
Grâce à cela, faire un tri personnalisé est simple ; ça respecte le principe de Larry Wall : « Easy things should be easy and hard things should be possible ».
« Le fascisme c’est la gangrène, à Washington comme en Russie. » — adapté de Renaud, Hexagone
# Perl
Posté par Arthur Accroc . En réponse au journal Haskell et le tri. Évalué à 4. Dernière modification le 25 février 2016 à 10:56.
L’équivalent en Perl :
et le résultat, affiché par
dd:sortaccepte en argument un bloc de code effectuant la comparaison,$aet$bcorrespondant aux éléments à comparer.<=>etcmpsont les opérateurs de comparaison, respectivement numérique et lexicale ; ils rendent -1, 0 ou 1 selon le résultat de la comparaison.Du point de vue des opérations booléennes, 0 est considéré comme faux et les autres nombres comme vrai. Par ailleurs, les opérateurs booléens (sauf
!,not) rendent la valeur d’origine (et n’évaluent que leur premier argument s’il suffit à déterminer que le résultat est vrai ou faux).Par conséquent
||(ou) rend la valeur de la première comparaison si elle est non nulle et de la seconde sinon.Grâce à cela, faire un tri personnalisé est simple ; ça respecte le principe de Larry Wall : « Easy things should be easy and hard things should be possible ».
« Le fascisme c’est la gangrène, à Washington comme en Russie. » — adapté de Renaud, Hexagone