Tal como o Ruby possui symbols
, Elixir possui atoms
e tal como em
Ruby é possível converter strings em symbols, no Elixir também é
possível através da função binary_to_atom/2
ou
binary_to_existing_atom/2
que recebe dois argumentos, a string e
o atom :utf8
. Eu quis melhorar isto e submeti uma pull-request…
Atoms são strings cujo valor é o próprio conteúdo, ou seja, o atom
:aberto
possui o conteúdo aberto
. Isto não parece muito útil a
primeira vista, mas o que ocorre é que os atoms são referencias, de
modo que vocês pode ter milhares de processos utilizando o atom
:aberto
sem ocupar todo o espaço que ocupariam se fossem
strings. Vejam que se tivermos milhares de processos utilizando a
string “aberto”, cada processo estaria alocando vários bytes.
As funções binary_to_atom/2
e binary_to_existing_atom/2
são
responsáveis por converter uma string em um atom, e no caso eu queria
digitar menos. Considerei que o :utf8
que sempre era passado era
desnecessário e então enviei uma pull-request que adiciona duas macros
que aceitam apenas um parâmetro.
Alguns exemplos de como era chamado antes:
binary_to_atom "my_atom", :utf8 #=> :my_atom
:my_atom #=> :my_atom
binary_to_existing_atom "my_atom", :utf8 #=> :my_atom
E depois que o merge foi feito:
binary_to_atom "my_atom" #=> :my_atom
:my_atom #=> :my_atom
binary_to_existing_atom "my_atom" #=> :my_atom
Aprender uma nova linguagem de programação, e ainda por cima poder contribuir para sua evolução, mesmo que esteja ainda tão instável em termos de maturidade, mas isso faz parte. Entender as fraquezas e as partes fortes faz parte, estudar seu código, participar das discussões acompanhar a evolução de uma linguagem tão promissora é, no mínimo, divertido.