Elixir Language
Consejos y trucos de la consola IEx
Buscar..
Recompila proyecto con `recompile`
iex(1)> recompile
Compiling 1 file (.ex)
:ok
Ver documentación con `h`
iex(1)> h List.last
def last(list)
Returns the last element in list or nil if list is empty.
Examples
┃ iex> List.last([])
┃ nil
┃
┃ iex> List.last([1])
┃ 1
┃
┃ iex> List.last([1, 2, 3])
┃ 3
Obtener valor del último comando con `v`
iex(1)> 1 + 1
2
iex(2)> v
2
iex(3)> 1 + v
3
Vea también: Obtenga el valor de una fila con `v`
Obtenga el valor de un comando anterior con `v`
iex(1)> a = 10
10
iex(2)> b = 20
20
iex(3)> a + b
30
Puede obtener una fila específica pasando el índice de la fila:
iex(4)> v(3)
30
También puede especificar un índice relativo a la fila actual:
iex(5)> v(-1) # Retrieves value of row (5-1) -> 4
30
iex(6)> v(-5) # Retrieves value of row (5-4) -> 1
10
El valor puede ser reutilizado en otros cálculos:
iex(7)> v(2) * 4
80
Si especifica una fila no existente, IEx
generará un error:
iex(7)> v(100)
** (RuntimeError) v(100) is out of bounds
(iex) lib/iex/history.ex:121: IEx.History.nth/2
(iex) lib/iex/helpers.ex:357: IEx.Helpers.v/1
Salir de la consola IEx
- Use Ctrl + C, Ctrl + C para salir
iex(1)>
BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
(v)ersion (k)ill (D)b-tables (d)istribution
- Use
Ctrl+ \
para salir inmediatamente
Ver información con `i`
iex(1)> i :ok
Term
:ok
Data type
Atom
Reference modules
Atom
iex(2)> x = "mystring"
"mystring"
iex(3)> i x
Term
"mystring"
Data type
BitString
Byte size
8
Description
This is a string: a UTF-8 encoded binary. It's printed surrounded by
"double quotes" because all UTF-8 encoded codepoints in it are printable.
Raw representation
<<109, 121, 115, 116, 114, 105, 110, 103>>
Reference modules
String, :binary
Creación de PID
Esto es útil cuando no guardó el PID de un comando anterior
iex(1)> self()
#PID<0.138.0>
iex(2)> pid("0.138.0")
#PID<0.138.0>
iex(3)> pid(0, 138, 0)
#PID<0.138.0>
Tenga sus alias listos cuando inicie IEx
Si coloca sus alias de uso común en un archivo .iex.exs
en la raíz de su aplicación, IEx los cargará por usted al inicio.
alias App.{User, Repo}
Historia persistente
De forma predeterminada, el historial de entrada del usuario en IEx
no se mantiene en las diferentes sesiones.
erlang-history
agrega soporte de historial tanto para el shell Erlang como para IEx
:
git clone [email protected]:ferd/erlang-history.git
cd erlang-history
sudo make install
Ahora puede acceder a sus entradas anteriores con las teclas de flecha hacia arriba y hacia abajo, incluso a través de diferentes sesiones IEx
.
Cuando la consola de Elixir está atascada ...
A veces, es posible que ejecutes accidentalmente algo en el shell que termina esperando para siempre y, por lo tanto, bloquea el shell:
iex(2)> receive do _ -> :stuck end
En ese caso, presione Ctrl-g. Verás:
User switch command
Ingrese estos comandos en orden:
-
k
(para matar el proceso de shell) -
s
(para iniciar un nuevo proceso de shell) -
c
(para conectarse al nuevo proceso de shell)
Terminarás en una nueva concha de Erlang:
Eshell V8.0.2 (abort with ^G)
1>
Para iniciar un shell Elixir, escriba:
'Elixir.IEx.CLI':local_start().
(No olvides el punto final!)
Luego verás un nuevo proceso de shell Elixir:
Interactive Elixir (1.3.2) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> "I'm back"
"I'm back"
iex(2)>
Para escapar del modo "en espera de más entrada" (debido a las comillas no cerradas, corchetes, etc.) escriba #iex:break
, seguido de un retorno de carro ( ⏎ ):
iex(1)> "Hello, "world"
...(1)>
...(1)> #iex:break
** (TokenMissingError) iex:1: incomplete expression
iex(1)>
lo anterior es especialmente útil cuando copiar y pegar un fragmento relativamente grande convierte la consola en el modo de "espera de más entrada".
salir de la expresión incompleta
Cuando haya ingresado algo en IEx que espera una finalización, como una cadena multilínea, IEx cambiará la solicitud para indicar que está esperando a que termine cambiando la solicitud para que tenga puntos suspensivos ( ...
) en lugar de iex
.
Si encuentra que IEx está esperando que termine una expresión pero no está seguro de lo que necesita para terminar la expresión, o simplemente desea cancelar esta línea de entrada, ingrese #iex:break
como entrada de la consola. Esto hará que IEx lance un TokenMissingError
y cancele la espera de más entrada, devolviéndole a una entrada de consola estándar de "nivel superior".
iex:1> "foo"
"foo"
iex:2> "bar
...:2> #iex:break
** (TokenMissingError) iex:2: incomplete expression
Más información está disponible en la documentación de IEx .
Cargue un módulo o script en la sesión IEx
Si tienes un archivo de elixir; un script o un módulo y desea cargarlo en la sesión IEx actual, puede usar el método c/1
:
iex(1)> c "lib/utils.ex"
iex(2)> Utils.some_method
Esto compilará y cargará el módulo en IEx, y podrás llamar a todos sus métodos públicos.
Para los scripts, ejecutará inmediatamente el contenido del script:
iex(3)> c "/path/to/my/script.exs"
Called from within the script!