Buscar..


Números

El elixir viene con números enteros y números de punto flotante . Un literal entero se puede escribir en formatos decimal, binario, octal y hexadecimal.

iex> x = 291
291

iex> x = 0b100100011
291

iex> x = 0o443
291

iex> x = 0x123
291

Como Elixir usa la aritmética bignum, el rango de enteros solo está limitado por la memoria disponible en el sistema .

Los números de punto flotante son de doble precisión y siguen la especificación IEEE-754.

iex> x = 6.8
6.8

iex> x = 1.23e-11
1.23e-11

Tenga en cuenta que el elixir también es compatible con la forma exponencial para flotadores.

iex> 1 + 1
2

iex> 1.0 + 1.0
2.0

Primero agregamos dos números enteros, y el resultado es un entero. Luego, agregamos dos números de punto flotante, y el resultado es un número de punto flotante.

La división en Elixir siempre devuelve un número de punto flotante:

iex> 10 / 2
5.0

De la misma manera, si sumas, restas o multiplicas un número entero por un número de punto flotante, el resultado será un punto flotante:

iex> 40.0 + 2
42.0

iex> 10 - 5.0
5.0

iex> 3 * 3.0
9.0

Para la división entera, se puede usar la función div/2 :

iex> div(10, 2)
5

Los átomos

Los átomos son constantes que representan un nombre de alguna cosa. El valor de un átomo es su nombre. Un nombre de átomo comienza con dos puntos.

:atom   # that's how we define an atom

El nombre de un átomo es único. Dos átomos con los mismos nombres siempre son iguales.

iex(1)> a = :atom
:atom

iex(2)> b = :atom
:atom

iex(3)> a == b
true

iex(4)> a === b
true

Los booleanos true y false , en realidad son átomos.

iex(1)> true == :true
true

iex(2)> true === :true
true

Los átomos se almacenan en la tabla de átomos especiales. Es muy importante saber que esta tabla no es recogida de basura. Entonces, si quieres (o accidentalmente es un hecho) constantemente crear átomos, es una mala idea.

Binarios y cadenas de bits

Los binarios en elixir se crean utilizando la construcción Kernel.SpecialForms << >> .

Son una herramienta poderosa que hace que Elixir sea muy útil para trabajar con protocolos binarios y codificaciones.

Los binarios y las cadenas de bits se especifican mediante una lista de valores enteros o variables delimitados por comas, incluidos en "<<" y ">>". Se componen de 'unidades', ya sea una agrupación de bits o una agrupación de bytes. La agrupación predeterminada es un byte único (8 bits), especificado mediante un entero:

<<222,173,190, 239>> # 0xDEADBEEF

Las cadenas de elixir también se convierten directamente a binarios:

iex> <<0, "foo">>
<<0, 102, 111, 111>>

Puede agregar "especificadores" a cada "segmento" de un binario, lo que le permite codificar:

  • Tipo de datos
  • tamaño
  • Endianness

Estos especificadores se codifican siguiendo cada valor o variable con el operador "::":

<<102::integer-native>>
<<102::native-integer>> # Same as above
<<102::unsigned-big-integer>>
<<102::unsigned-big-integer-size(8)>>
<<102::unsigned-big-integer-8>> # Same as above
<<102::8-integer-big-unsigned>>
<<-102::signed-little-float-64>> # -102 as a little-endian Float64
<<-102::native-little-float-64>> # -102 as a Float64 for the current machine

Los tipos de datos disponibles que puede utilizar son:

  • entero
  • flotador
  • bits (alias para cadena de bits)
  • cadena de bits
  • binario
  • bytes (alias para binario)
  • utf8
  • utf16
  • utf32

Tenga en cuenta que al especificar el 'tamaño' del segmento binario, varía de acuerdo con el 'tipo' elegido en el especificador de segmento:

  • entero (predeterminado) 1 bit
  • flotar 1 bit
  • binarios de 8 bits


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow