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

时间:2015-03-13 02:52:40

标签: elixir

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

 my_process <- :message, self

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

 Process.send my_process, :message, self

这种变化的原因是什么?

1 个答案:

答案 0 :(得分:8)

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

lc x inlist my_list do
  # ...
end

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

for x <- my_list do
  # ...
end

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

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

顺便说一句,您对Process.send/3的使用是错误的。 The third parameter must be :noconnect or :nosuspend。通常,您会使用更简单,更短的send (aka Kernel.send)