Segundo a documentação do Elixir, um atom é uma constante cujo valor é o seu próprio nome. E para desenvolvedores que vieram do Ruby, assim como eu, um atom é análogo ao :symbol.
É comum o uso de atoms em lists, tuplas e maps:
defmodule Example do
def example_params do
# tupla
tuple = {:ok, "This is a tuple"}
# list
list = [:slug, :title]
# map
map = %{
name: "Diego",
age: 35,
country: "Brazil"
}
end
end
Em Elixir os booleanos true
e false
, por exemplo, também são atoms:
iex> true == :true
> true
iex> false == :false
> false
iex> is_atom(false)
> true
iex> is_boolean(:false)
> true
Um outro exemplo é quando usamos atoms como referência de status de uma determinada requisição:
defmodule ExampleController do
#...
def delete_person(conn, %{"id" => id}) do
person = Person.get_person!(id)
{:ok, _person} = Person.Repo.delete(person)
conn
|> put_flash(:info, "Person deleted successfully.")
|> redirect(to: person_path(conn, :index))
end
end
No exemplo acima :ok
indica que foi deletado com sucesso e que, em seguida, foi disparado uma "flash message" com status :info
informando que "a pessoa foi deletada com sucesso" e, posteriormente, é feito o redirecionamento para a :index
.
Top comments (6)
obrigado por compartilhar conteúdo! muito bacana!
Obrigado! =D
show
Obrigado! =D
Parabéns!
Obrigado! =D