为什么elixir改变了向进程发送消息的注释?

Use*_*159 4 elixir

我注意到在elixir版本0.10.1中,您向这样的进程发送消息

 my_process <- :message, self
Run Code Online (Sandbox Code Playgroud)

但现在在elixir 1.0.2中,您向这样的进程发送消息

 Process.send my_process, :message, self
Run Code Online (Sandbox Code Playgroud)

这种变化的原因是什么?

Pat*_*ity 8

在此更改之前,列表推导看起来像这样:

lc x inlist my_list do
  # ...
end
Run Code Online (Sandbox Code Playgroud)

然而,新手的语法很奇怪,所以Elixir团队开始寻找替代方案.获胜的语法是

for x <- my_list do
  # ...
end
Run Code Online (Sandbox Code Playgroud)

现在,<-突然的意义变得依赖于背景.这通常不是一件坏事,但它通常难以解析并可能允许含糊不清,因此他们决定改变它.

使用另外一个原因send,而不是<-是要与一致的receive语法.让这两者具有相似的视觉外观比在不同的句法层面上处理它们更有意义.

顺便说一下,你的使用Process.send/3是错误的.第三个参数必须是:noconnect:nosuspend.通常你会使用更简单和更短send(又名Kernel.send).