在函数名称之前或之后矢量化点?

Geo*_*ery 5 julia

我可以使用点表示法对函数进行矢量化:

a = Vector(0:10) .* 4 
Run Code Online (Sandbox Code Playgroud)

在很多例子中,我读到点在星号之前。但是,这在以下情况下不起作用:

Complex.(a,a)
Run Code Online (Sandbox Code Playgroud)

在这里,点突然出现在函数名称的后面。

这是故意的吗?而且有规律吗?

crs*_*nbr 8

对于函数,点总是在函数名后面。

对于运算符,像*+例如,点在运算符之前。但是,您可以将运算符括在括号中并为点添加后缀。

为了使这种差异更加明确,请考虑以下示例,其中我们将“乘法”应用于函数调用语法:

x = rand(2,2)
sqrt.(x)
.*(x,x)
(*).(x,x)
x .* x
Run Code Online (Sandbox Code Playgroud)

最后三个命令都做同样的事情。

有关更多信息,请参阅 Julia 文档的相应部分:向量化函数和向量化“点”运算符的点语法

  • 点分运算符表示法至少在 Matlab 中有一个前身。其中,`.*`、`./`、`.^` 等表示元素运算。我认为这就是将点放在前面的原因,并且运算符点存在于功能点之前。对于函数来说,“foo.(x)”肯定更好,但是两种不同情况之间存在一些紧张关系。 (2认同)