Atoms
As constantes do elixir
Atoms são constantes onde seu valor é o próprio nome. Sua definição vem com um prefixo de dois pontos : seguido de um nome. Exemplo :apple.
Um ato é igual a outro atom com mesmo nome.
defmodule AtomTest do
use ExUnit.Case
test "simple tests about atom" do
apple = :apple
assert apple == :apple
assert :new_atom == :new_atom
end
endRodando esse código teremos um relatório de sucesso.
mix test
....
Finished in 0.02 seconds (0.00s async, 0.02s sync)
1 tests, 0 failuresAtoms podem ser definidos dinamicamente, para isso poder fazer de duas formas:
Utilizando interpolação
Utilizando conversão
1. Interpolação
2. Conversão
Atenção
Devemos tomar cuidado na criação de atoms dinamicamente em nossas aplicações. Quando atoms são criados eles se mantem na memória até que a aplicação reinicie. Isso quer dizer que, se tivermos uma forma de criar atoms dinamicamente exposta para o usuário, corremos o risco de usuários mal intencionados criarem N atoms, até que nossa aplicação não responda corretamente.
Temos algumas formas de evitar esse tipo de problema. Uma forma é a utilização do String.to_existing_atom/1 onde, um atom so será gerado, caso já tenha sido criado antes. Com isso podemos limitar o que pode e o que não pode ser criado.
E caso ele já tenha sido criado, não teremos problemas
Conclusão
Atoms são muito utilizados no mundo elixir, são práticos e fáceis de usar. Vimos que precisamos tomar cuidado com a geração dinâmica e que podemos controlar o que pode ser criado. Mais a frente utilizaremos cada vez mais atoms para simplificar nosso código e estrutura-lo.
Last updated
Was this helpful?