DEV Community

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

Posted on • Edited on

5 2

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.

Heroku

This site is built on Heroku

Join the ranks of developers at Salesforce, Airbase, DEV, and more who deploy their mission critical applications on Heroku. Sign up today and launch your first app!

Get Started

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

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more