iex(9)> Greeter.hello(:jane)
"Hello Jane"
iex(10)> Greeter.hello(:anna)
"Hello anna"
Pattern Matching
# calculator.exs
defmodule Calculator do
def multiply_by_two([]), do: return []
def multiply_by_two([head | tail]) do
[head * 2 | multiply_by_two(tail)]
end
end
iex> Calculator.mulitply_by_two([])
[]
iex> Calculator.multiply_by_two([1, 2, 3])
[2, 4, 6]
iex> 2 = b
2 #huh?
iex> a = 1
1
iex> 2 = a
** (MatchError) no match of right hand side value: 1
iex(8)> b = 2
2
iex(9)> b = 3
3
iex(1)> a = 1
1
iex(2)> b = 3
1
iex(3)> ^b = 4
** (MatchError) no match of right hand side value: 4
iex(3)>
[/code]
iex(12)> {result, value} = {:ok,2}
{:ok, 2}
iex(13)>
iex(12)> {result, value} = {:ok,2}
{:ok, 2}
iex(13)> value
2
iex(12)> {:ok, value} = {:notok, 2}
** (MatchError) no match right hand side value: {:notok,2}
# greeter.exs
defmodule Greeter do
def hello(:jane), do: "Hello Jane"
def hello(name) do
"Hello #{name}"
end
end
iex(6)> a = 1
1
iex(7)> b = 2
2
iex(6)> a = 1
1
iex(7)> b = 2
2
iex(5)> 2 = b
** (CompileError) iex:5: undefined function b/0
I guess elixir doesn't support variable matching in the right side?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Mistake on https://gist.github.com/aneyzberg/5cec0f73c6454e5ad0255b0538d650ed#file-pattern-matching-5-md
I guess you meant
(and without that
[/code]
keyword)