Elixir Language
Suggerimenti e trucchi della console IEx
Ricerca…
Ricompilare il progetto con `ricompilare`
iex(1)> recompile
Compiling 1 file (.ex)
:ok
Vedi la documentazione 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
Ottieni valore dall'ultimo comando con `v`
iex(1)> 1 + 1
2
iex(2)> v
2
iex(3)> 1 + v
3
Vedi anche: Ottieni il valore di una riga con `v`
Ottieni il valore di un comando precedente con `v`
iex(1)> a = 10
10
iex(2)> b = 20
20
iex(3)> a + b
30
Puoi ottenere una riga specifica passando l'indice della riga:
iex(4)> v(3)
30
Puoi anche specificare un indice relativo alla riga corrente:
iex(5)> v(-1) # Retrieves value of row (5-1) -> 4
30
iex(6)> v(-5) # Retrieves value of row (5-4) -> 1
10
Il valore può essere riutilizzato in altri calcoli:
iex(7)> v(2) * 4
80
Se si specifica una riga non esistente, IEx
genererà un errore:
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
Esci dalla console IEx
- Usa Ctrl + C, Ctrl + C per uscire
iex(1)>
BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
(v)ersion (k)ill (D)b-tables (d)istribution
- Usa
Ctrl+ \
per uscire immediatamente
Vedi le informazioni 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
Creazione di PID
Ciò è utile quando non hai memorizzato il PID da un comando precedente
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>
Prepara i tuoi alias quando avvii IEx
Se inserisci i tuoi alias più comuni in un file .iex.exs
nella radice della tua app, IEx li caricherà automaticamente all'avvio.
alias App.{User, Repo}
Storia persistente
Per impostazione predefinita, la cronologia degli input dell'utente in IEx
non viene mantenuta tra sessioni diverse.
erlang-history
aggiunge il supporto della cronologia sia alla shell di Erlang che a IEx
:
git clone [email protected]:ferd/erlang-history.git
cd erlang-history
sudo make install
Ora puoi accedere ai tuoi precedenti input usando i tasti freccia su e giù, anche tra diverse sessioni IEx
.
Quando la console Elixir è bloccata ...
A volte potresti accidentalmente eseguire qualcosa nella shell che finisce per aspettare per sempre, e quindi bloccare la shell:
iex(2)> receive do _ -> :stuck end
In tal caso, premere Ctrl-g. Vedrai:
User switch command
Inserisci questi comandi nell'ordine:
-
k
(per uccidere il processo shell) -
s
(per iniziare un nuovo processo di shell) -
c
(per connettersi al nuovo processo shell)
Finirai con una nuova shell di Erlang:
Eshell V8.0.2 (abort with ^G)
1>
Per avviare una shell Elixir, digitare:
'Elixir.IEx.CLI':local_start().
(non dimenticare il punto finale!)
Quindi vedrai un nuovo processo di shell Elixir in arrivo:
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)>
Per uscire dalla modalità "in attesa di più input" (a causa di virgolette non #iex:break
, parentesi ecc.) Digitare #iex:break
, seguito da carriage return ( ⏎ ):
iex(1)> "Hello, "world"
...(1)>
...(1)> #iex:break
** (TokenMissingError) iex:1: incomplete expression
iex(1)>
quanto sopra è particolarmente utile quando copia-incolla uno snippet relativamente grande trasforma la console in modalità "in attesa di più input".
rompere di espressione incompleta
Quando hai inserito qualcosa in IEx che si aspetta un completamento, come una stringa multilinea, IEx cambierà il prompt per indicare che è in attesa che tu finisca cambiando il prompt per avere un iex
di sospensione ( ...
) piuttosto che iex
.
Se scopri che IEx ti aspetta per terminare un'espressione ma non sei sicuro di cosa debba terminare l'espressione, o semplicemente vuoi interrompere questa riga di input, digita #iex:break
come input della console. Ciò farà sì che IEx lanci un TokenMissingError
e annulli l'attesa di altri input, riportandoti a un input di console "di primo livello" standard.
iex:1> "foo"
"foo"
iex:2> "bar
...:2> #iex:break
** (TokenMissingError) iex:2: incomplete expression
Ulteriori informazioni sono disponibili nella documentazione IEx .
Carica un modulo o uno script nella sessione IEx
Se hai un file elisir; uno script o un modulo e vuoi caricarlo nella sessione IEx corrente, puoi utilizzare il metodo c/1
:
iex(1)> c "lib/utils.ex"
iex(2)> Utils.some_method
Questo compilerà e caricherà il modulo in IEx e sarai in grado di chiamare tutti i suoi metodi pubblici.
Per gli script, eseguirà immediatamente il contenuto dello script:
iex(3)> c "/path/to/my/script.exs"
Called from within the script!