diff options
Diffstat (limited to 'elixir.html.markdown')
| -rw-r--r-- | elixir.html.markdown | 11 | 
1 files changed, 10 insertions, 1 deletions
| diff --git a/elixir.html.markdown b/elixir.html.markdown index fb5f183a..eedeb227 100644 --- a/elixir.html.markdown +++ b/elixir.html.markdown @@ -195,7 +195,7 @@ cond do      "But I will"  end -# It is common to see the last condition equal to `true`, which will always match. +# It is common to set the last condition equal to `true`, which will always match.  cond do    1 + 1 == 3 ->      "I will never be seen" @@ -369,6 +369,13 @@ spawn(f) #=> #PID<0.40.0>  # messages to the process. To do message passing we use the `send` operator.  # For all of this to be useful we need to be able to receive messages. This is  # achieved with the `receive` mechanism: + +# The `receive do` block is used to listen for messages and process +# them when they are received. A `receive do` block will only +# process one received message. In order to process multiple +# messages, a function with a `receive do` block must recursively +# call itself to get into the `receive do` block again. +  defmodule Geometry do    def area_loop do      receive do @@ -384,6 +391,8 @@ end  # Compile the module and create a process that evaluates `area_loop` in the shell  pid = spawn(fn -> Geometry.area_loop() end) #=> #PID<0.40.0> +# Alternatively +pid = spawn(Geometry, :area_loop, [])  # Send a message to `pid` that will match a pattern in the receive statement  send pid, {:rectangle, 2, 3} | 
