@是什么。朱莉娅做什么?

时间:2019-01-17 02:36:13

标签: macros julia

我正在尝试在Julia中使用LsqFit package,并且文档使用了@.宏,而没有真正解释它的工作方式。从软件包文档中,我不清楚这是标准的Julia宏还是软件包特有的某种东西,并且在其他地方找不到该宏的引用。 @.在Julia中如何工作?

1 个答案:

答案 0 :(得分:10)

您可以通过按?进入帮助模式来查看有关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]))