diff options
author | Per Lilja <perlilja@gmail.com> | 2015-10-21 13:28:36 +0200 |
---|---|---|
committer | Per Lilja <perlilja@gmail.com> | 2015-10-21 13:28:36 +0200 |
commit | 3f8b067a0cace44bb43bdd08561b0efc747fb26c (patch) | |
tree | 1e17c3f1968f7b2f97ea9f84ca0098224ff60786 /elixir.html.markdown | |
parent | d1a822f96c88855b2cbb649a4ea7b452e4104164 (diff) | |
parent | ef6973b13f50063462d28a96ac57e93aed40844c (diff) |
Merge pull request #1 from adambard/master
Update fork
Diffstat (limited to 'elixir.html.markdown')
-rw-r--r-- | elixir.html.markdown | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/elixir.html.markdown b/elixir.html.markdown index c8599838..eedeb227 100644 --- a/elixir.html.markdown +++ b/elixir.html.markdown @@ -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} |