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