Notation #
est (comme indiqué ci-dessus) utilisé pour désigner « une variable va ici "dans une fonction pure (" fermeture "pour vous les développeurs traditionnels). Il doit toujours être suivi à la fin par &
.
Le meilleur exemple est le suivant: f[x_]:=x+5
. Cela crée un ensemble retardé, à chaque fois qu'une valeur est passée dans une référence de symbole f
en tant que paramètre fonctionnel, cette valeur reçoit un nom spécifique à la fonction de contexte local x
(sans affecter la définition globale de x
, s'il y en a un). Ensuite, l'expression x+5
sera évaluée en utilisant cette nouvelle variable/valeur. Le processus ci-dessus nécessite l'initialisation du symbole f
, la création de la variable locale x
et la mise en mémoire permanente de l'expression x+5
, sauf si vous l'effacez.
Side note:f=5
et f[x_]:=5
travaillent tous les deux avec un "symbole" f
. f
peut être appelée une fonction, lorsque des crochets sont utilisés pour extraire sa valeur, et f[x_]
peut coexister pacifiquement avec f[x_,y_]
sans se chevaucher l'un l'autre. Un sera utilisé quand un paramètre est envoyé, et un autre quand 2 paramètres sont envoyés.
Parfois vous avez juste besoin d'une fonction rapide et n'avez pas besoin de la définir et de la laisser pendre. Donc, (someValue + 5)
devient (#+5)&
, où &
dit "Je suis une pure fonction, et travaillera avec tout ce que vous m'envoyez", et #
dit "Je suis le paramètre (ou une liste de paramètres) qui a été envoyé à la fonction pure" . Vous pouvez également utiliser #1
, #2
, #3
, etc, si vous lui envoyez plus de 1 paramètre.
Exemple de pure fonction multi-paramètres d'usage courant:
Disons que mydata
est une liste de listes, que vous devez trier par médiane des listes (par exemple les données des prix des logements de différentes villes des États-Unis):
Sort[ myData , Median[#1] > Median[#2]& ]
conseil rapide, si vous appliquez une fonction à une seule valeur, il peut sembler plus propre et plus propre, et utilise moins de frappe utiliser @
au lieu de []
, ce qui signifie essentiellement Prefix
. Ne pas confondre avec Map (/@)
ou Apply(@@)
. La commande ci-dessus devient alors:
Sort[ myData , [email protected]#1 > [email protected]#2 & ]
Vous pouvez enchaîner @
en tant que tel: [email protected]@DeleteDuplicates[...]
Cher Soufiane, merci. Alors qu'est-ce que Root [-1 - 2 # 1 - # 1^2 + 2 # 1^3 + # 1^4 &, 1] signifie exactement? – user376089