Type Conversions in Elixir

In Elixir, type conversions are explicitly invoked by built-in functions. Here are some of the most commonly used functions to convert between different types:

  • Integer.to_string/1: This function converts an integer to a string.

    iex> Integer.to_string(42)
    "42"
  • String.to_integer/1: This function converts a string to an integer. An error is raised if the string does not represent a valid number.

    iex> String.to_integer("42")
    42
  • Float.to_string/1 and String.to_float/1: These functions convert between floating-point numbers and strings.

    iex> Float.to_string(3.14)
    "3.14"
    
    iex> String.to_float("3.14")
    3.14
  • Atom.to_string/1 and String.to_atom/1: These functions convert between atoms and strings.

    Note that String.to_atom/1 should be used sparingly because atoms are not garbage-collected, meaning that converting a large amount of unique strings into atoms can exhaust your system memory.
    iex> Atom.to_string(:elixir)
    "elixir"
    
    iex> String.to_atom("elixir")
    :elixir

    Elixir also provides Kernel.to_string/1 to convert some terms to a string. For example, lists can be converted to a string representation.

    iex> to_string([1, 2, 3])
    <<1, 2, 3>> (1)
    1 This is a so called BitString.

Remember, type conversion in Elixir is explicit and must be invoked through these built-in functions. This design choice, while requiring a bit more typing, can help prevent bugs related to unexpected type conversions.