DEV Community

Cover image for O que é um atom?
Diego Novais for Trybe

Posted on • Edited on

O que é um atom?

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
Enter fullscreen mode Exit fullscreen mode

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

Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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)

Collapse
 
wlsf profile image
Willian Frantz

obrigado por compartilhar conteúdo! muito bacana!

Collapse
 
dnovais profile image
Diego Novais

Obrigado! =D

Collapse
 
andrgab profile image
Andre Gabriel

show

Collapse
 
dnovais profile image
Diego Novais

Obrigado! =D

Collapse
 
tporto profile image
Thiago Porto

Parabéns!

Collapse
 
dnovais profile image
Diego Novais

Obrigado! =D