diff options
Diffstat (limited to 'elixir.html.markdown')
| -rw-r--r-- | elixir.html.markdown | 15 | 
1 files changed, 13 insertions, 2 deletions
| diff --git a/elixir.html.markdown b/elixir.html.markdown index c8599838..eb708576 100644 --- a/elixir.html.markdown +++ b/elixir.html.markdown @@ -170,7 +170,7 @@ case {:one, :two} do    {:four, :five} ->      "This won't match"    {:one, x} -> -    "This will match and bind `x` to `:two`" +    "This will match and bind `x` to `:two` in this clause"    _ ->      "This will match any value"  end @@ -343,6 +343,7 @@ rescue    RuntimeError -> "rescued a runtime error"    _error -> "this will rescue any error"  end +#=> "rescued a runtime error"  # All exceptions have a message  try do @@ -351,6 +352,7 @@ rescue    x in [RuntimeError] ->      x.message  end +#=> "some error"  ## ---------------------------  ## -- Concurrency @@ -369,6 +371,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 +393,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} @@ -400,7 +411,7 @@ self() #=> #PID<0.27.0>  ## References -* [Getting started guide](http://elixir-lang.org/getting_started/1.html) from [elixir webpage](http://elixir-lang.org) +* [Getting started guide](http://elixir-lang.org/getting-started/introduction.html) from the [Elixir website](http://elixir-lang.org)  * [Elixir Documentation](http://elixir-lang.org/docs/master/)  * ["Programming Elixir"](https://pragprog.com/book/elixir/programming-elixir) by Dave Thomas  * [Elixir Cheat Sheet](http://media.pragprog.com/titles/elixir/ElixirCheat.pdf) | 
