Antes que nada tenemos que instalarlo, eso es fácil y más
fácil si se utiliza linux, les dejo la guía de instalación:
http://elixir-lang.org/install.html
Ojo antes que antes a leer un poco:
http://emanuelpeg.blogspot.com.ar/search/label/Elixir
Si lo instalamos bien al escribir lo siguiente, veremos la
versión:
% elixir -v
Erlang/OTP
19 [erts-8.0.2] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe]
[kernel-poll:false] [dtrace]
Elixir 1.4.0
Empesemos utilizando el modo interactivo, como para
amigarnos con el lenguaje. Para acceder a esto debemos tipear iex en la consola:
~ $ iex
Erlang/OTP
18 [erts-7.3] [source] [64-bit] [smp:6:6] [async-threads:10]
[kernel-poll:false]
Interactive
Elixir (1.1.0-dev) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)>
Y el cursor quedara en espera de comandos y nosotros podemos
empezar a jugar!!!
Vamos a probar cosas básicas del lenguaje:
iex> 2+3
5
iex> 2+3
== 5
true
iex>
String.length("The quick brown fox jumps over the lazy dog")
43
Veamos los datos básicos:
Integers
iex> 255
255
Podemos usar octales, binarios o hexadecimales:
iex> 0b0110
6
iex> 0o644
420
iex> 0x1F
31
Floats
En Elixir, el número flotante requiere un decimal antes/después
del punto y permite usar la notación exponencial.
iex>
3.14
3.14
iex> .14
**
(SyntaxError) iex:2: syntax error before: '.'
iex> 1.0e-10
1.0e-10
Booleans
Elixir soporta los valores True y False. Y todo es verdadero
excepto false y nil
iex>
true
true
iex>
false
false
Atoms
Un átomo es una constante cuyo nombre es su valor. Si está
familiarizado con Ruby, estos son sinónimos de Símbolos:
iex>
:foo
:foo
iex>
:foo == :bar
false
Los booleanos verdadero y falso son también los átomos: true
y: false respectivamente.
iex>
true |> is_atom
true
iex>
:true |> is_boolean
true
iex> :true === true
true
Los nombres de los módulos en Elixir son también átomos.
MyApp.MyModule es un átomo válido, incluso si aún no se ha declarado dicho
módulo.
iex>
is_atom(MyApp.MyModule)
true
Los átomos también se utilizan para referenciar módulos de
las bibliotecas Erlang, incluidas las importadas.
iex> :crypto.rand_bytes 3
<<23, 104, 108>>
Strings o cadenas.
Las cadenas en Elixir tienen codificación UTF-8 y están
envueltas entre comillas dobles:
iex> "Hello"
"Hello"
iex> "dziękuję"
"dziękuję"
Los String soportan espacios en blancos y enters, etc:
iex>
"foo
...>
bar"
"foo\nbar"
iex>
"foo\nbar"
"foo\nbar"
Elixir incluye más tipos de datos complejos.
Operación.
Elixir soporta los operadores básicos como : +, -, *, y
"/" .
iex> 2 + 2
4
iex> 2 - 1
1
iex> 2 * 5
10
iex> 10 / 5
2.0
Si necesita división entera o el resto de división, Elixir
viene con dos funciones útiles para lograr esto:
iex> div(10, 5)
2
iex> rem(10, 3)
1
Boolean
Elixir provee operadores booleanos: ||, &&, y !
iex> -20 || true
-20
iex> false || 42
42
iex> 42
&& true
true
iex> 42
&& nil
nil
iex> !42
false
iex> !false
true
Hay tres operadores adicionales cuyo primer argumento debe
ser un booleano (verdadero o falso):
iex>
true and 42
42
iex>
false or true
true
iex> not
false
true
iex> 42
and true
** (ArgumentError) argument error: 42
iex> not 42
** (ArgumentError) argument error
Comparación
Elixir provee los operadores para comparar como otros
lenguajes:
iex> 1
> 2
false
iex> 1
!= 2
true
iex> 2
== 2
true
iex> 2 <= 3
true
Además provee la comparación estricta: ===:
iex> 2 == 2.0
true
iex> 2 === 2.0
false
Una característica importante de Elixir es que cualquier dos
tipos pueden ser comparados; Esto es particularmente útil en la clasificación.
No necesitamos memorizar el orden de clasificación, pero es importante estar
consciente de el
number <
atom < reference < function < port < pid < tuple < map <
list < bitstring
Esto puede llevar a algunas comparaciones interesantes, pero
válidas, que no puede encontrar en otros Lenguajes:
iex>
:hello > 999
true
iex>
{:hello, :world} > [1, 2, 3]
false
String Interpolation
Si has usado Ruby o Scala, string interpolation en Elixir te
va sonar familiar:
iex>
name = "Sean"
iex>
"Hello #{name}"
"Hello Sean"
String Concatenation
Para concatenar 2 cadenas utilizamos el operador <> :
iex>
name = "Sean"
iex>
"Hello " <> name
"Hello Sean"
Este es el primer post de algunos más que nos acerquen a
este lenguaje.
Dejo link: