我注意到在elixir版本0.10.1中,您向这样的进程发送消息
my_process <- :message, self
但是现在在elixir 1.0.2中,你向这样的进程发送消息
Process.send my_process, :message, self
这种变化的原因是什么?
答案 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
)。