Что значит @.делать в Юлии? - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь использовать пакет LsqFit в Julia, и в документации используется макрос @. без реального объяснения, как он работает. Из документации пакета мне не ясно, является ли это стандартный макрос Julia или что-то своеобразное для пакета, и я не могу найти ссылку на этот макрос в другом месте. Как @. работает в Юлии?

1 Ответ

0 голосов
/ 17 января 2019

Вы можете проверить документацию для любой функции Julia, нажав ?, чтобы перейти в режим справки, см. Вывод ниже:

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).

Описывая вышеприведенную документацию другими словами, @. позволяет векторизовать все вызовы функций в выражении, следующем за макросом.

Если вы не уверены, как работает какой-либо макрос Julia, я рекомендую использовать макрос @macroexpand, например:

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