我目前正在Elixir工作。我對Ruby或函數式編程方面的經驗都很少,所以我對語法不太熟悉。我正在閱讀Learn Elixir in Y minutes,其中一個例子讓我有點困惑。起初,指南顯示了控制流結構,我理解得很好。Elixir案例與使用`receive`的類似語法
case {:one, :two} do
{:four, :five} ->
"This won't match"
{:one, x} ->
"This will match and bind `x` to `:two` in this clause"
_ ->
"This will match any value"
end
但是,顯示的最後一個例子之一是接收來自其他進程的消息。它具有與case
示例非常相似的語法和結構,但它沒有使用case
關鍵字。它在我看來就像某種匿名大小寫的語法,可以用於不同的參數。
defmodule Geometry do
def area_loop do
receive do
{:rectangle, w, h} ->
IO.puts("Area = #{w * h}")
area_loop()
{:circle, r} ->
IO.puts("Area = #{3.14 * r * r}")
area_loop()
end
end
end
這兩種語法有什麼區別?