【发布时间】:2016-07-02 15:09:25
【问题描述】:
我目前正在尝试使用 Elixir。我对 Ruby 或函数式编程的经验都很少,所以我对语法不太熟悉。我正在阅读Learn Elixir in Y minutes,其中一个示例让我有些困惑。起初,指南显示了case控制流结构,我理解得很好。
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 关键字。在我看来,它就像某种匿名 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
这两种语法有什么区别?
【问题讨论】:
标签: elixir