10. defmodule DogService do
def run do
HTTP.get("/doggies")
end
def log({:ok, response}) do
Logger.info(response)
end
def log({:error, error}) do
Logger.error(error)
end
def log(_) do
Logger.error("uhh... what happened?")
end
end
DogService.run |> DogService.log
11.
12. def give_treat(dog) do
if dog do
if dog.age > 5
"here ya go, #{dog.name}"
else
"here ya go, pup"
end
else
"uhhh... no dog?"
end
end
13. def give_treat(nil), do: "uhh... no dog?"
def give_treat(%{name: name, id: id}) when id > 5 do
"here ya go, #{name}"
end
def give_treat(_) do
"here ya go, pup"
end
14. def give_treat(nil), do: "uhh... no dog?"
def give_treat(id) when is_integer(id) do
id |> find |> give_treat
end
def give_treat(%{age: age, name: name}) when age > 5 do
"here ya go, #{name}"
end
def give_treat(_) do
"here ya go, pup"
end
18. def save(changeset) do
case DB.insert(changeset) do
{:ok, record} ->
case ElasticSearch.sync(record) do
{:ok, _, response} ->
{:ok, record, response}
{:error, status, response} ->
{:error, status, response}
end
{:error, error} ->
{:error, error}
end
end
25. defmodule Example do
def iif(test, a, b) do
if test, do: a, else: b
end
end
Example.iif(false, IO.puts("a"), IO.puts("b"))
Example.iif(true, IO.puts("a"), IO.puts("b"))
27. defmodule Example do
defmacro iif(test, a, b) do
quote do
if unquote(test), do: unquote(a), else: unquote(b)
end
end
end
Example.iif(false, IO.puts("a"), IO.puts("b"))
Example.iif(true, IO.puts("a"), IO.puts("b"))