當你想要表達一組常數時,可以使用原子。原子提供了一種型別安全的方式來比較值。原子由其名稱定義,並以冒號作為前綴:
# Atoms start with a ':',
# followed by alphanumeric snake_cased characters
:an_atom
Elixir 標準函式庫中的許多函式會回傳一個原子來標註結果:
Enum.fetch([1], 0)
# => {:ok, 1}
Enum.fetch([1], 2)
# => :error
原子 在內部由查找表中的整數表示,這些整數是自動設定的。這使得比較原子比比較字串更快。無法更改這個內部值。一般認為從使用者提供的輸入動態建立原子是一種反模式。執行階段只有有限數量的原子空間,如果原子表已滿,在執行階段產生新原子可能會失敗。