3 votes

Que fait @. dans Julia ?

J'essaie d'utiliser le Paquet LsqFit en Julia, et la documentation fait usage d'une macro @. sans vraiment expliquer comment ça marche. La documentation du paquet ne me permet pas de savoir s'il s'agit d'une macro standard de Julia ou d'un élément particulier au paquet, et je ne trouve pas de référence à cette macro ailleurs. Comment @. travailler dans Julia ?

12voto

Przemyslaw Szufel Points 20872

Vous pouvez vérifier la documentation pour n'importe quelle fonction de Julia en appuyant sur ? pour accéder au mode d'aide, voir le résultat ci-dessous :

help?> @.
  @. expr

  Convert every function call or operator in expr into a "dot call" (e.g. convert f(x) to f.(x)), and convert
  every assignment in expr to a "dot assignment" (e.g. convert += to .+=).

  If you want to avoid adding dots for selected function calls in expr, splice those function calls in with $.
  For example, @. sqrt(abs($sort(x))) is equivalent to sqrt.(abs.(sort(x))) (no dot for sort).

En décrivant la documentation ci-dessus en d'autres termes, la @. permet de vectoriser tous les appels de fonction dans l'expression qui suit une macro.

Si vous n'êtes pas sûr du fonctionnement d'une macro Julia, je vous recommande d'utiliser la fonction @macroexpand macro, par exemple :

julia> @macroexpand @. [1, 2, 3] + [4, 5, 6]
:((+).([1, 2, 3], [4, 5, 6]))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X