Macros 这是什么意思?。你喜欢朱莉娅吗?

Macros 这是什么意思?。你喜欢朱莉娅吗?,macros,julia,Macros,Julia,我试图在Julia中使用,文档使用了宏@.,但没有真正解释它是如何工作的。从软件包文档中我不清楚这是标准的Julia宏还是软件包特有的东西,我在别处找不到对这个宏的引用。@.如何在Julia中工作?您可以通过按?进入帮助模式查看任何Julia函数的文档,请参见以下输出: help?> @. @. expr Convert every function call or operator in expr into a "dot call" (e.g. convert f(x) to

我试图在Julia中使用,文档使用了宏
@.
,但没有真正解释它是如何工作的。从软件包文档中我不清楚这是标准的Julia宏还是软件包特有的东西,我在别处找不到对这个宏的引用。
@.
如何在Julia中工作?

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

,使用@时是否可以避免点赋值。?e、 g.@。a=b*C通常,不需要对赋值进行矢量化。如果右边有一个向量,它将被分配到左边。一个例外可能是
a=zeros(4,4);B=[1,2,3,4];A.=B
,键入
?。=
了解更多信息。对,问题是如果我只写@。a=b*c,我必须先声明'a',否则会出现错误。另一方面,如果我们可以避免。=在使用@时,我不需要这样做。也许你的意思是
a=@。b*c
在这种情况下,不需要声明a