Elixir Language
Conseils et astuces pour la console IEx
Recherche…
Recompiler le projet avec `recompile`
iex(1)> recompile
Compiling 1 file (.ex)
:ok
Voir la documentation avec `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
Récupère la valeur de la dernière commande avec `v`
iex(1)> 1 + 1
2
iex(2)> v
2
iex(3)> 1 + v
3
Voir aussi: Obtenir la valeur d'une ligne avec `v`
Récupère la valeur d'une commande précédente avec `v`
iex(1)> a = 10
10
iex(2)> b = 20
20
iex(3)> a + b
30
Vous pouvez obtenir une ligne spécifique en passant l'index de la ligne:
iex(4)> v(3)
30
Vous pouvez également spécifier un index relatif à la ligne en cours:
iex(5)> v(-1) # Retrieves value of row (5-1) -> 4
30
iex(6)> v(-5) # Retrieves value of row (5-4) -> 1
10
La valeur peut être réutilisée dans d'autres calculs:
iex(7)> v(2) * 4
80
Si vous spécifiez une ligne non existante, IEx
une erreur:
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
Quittez la console IEx
- Utilisez Ctrl + C, Ctrl + C pour quitter
iex(1)>
BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
(v)ersion (k)ill (D)b-tables (d)istribution
- Utilisez
Ctrl+ \
pour quitter immédiatement
Voir les informations avec `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
Création de PID
Ceci est utile lorsque vous n'avez pas stocké le PID d'une commande précédente
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>
Ayez vos alias prêts lorsque vous démarrez IEx
Si vous placez vos alias couramment utilisés dans un fichier .iex.exs
à la racine de votre application, IEx les chargera au démarrage.
alias App.{User, Repo}
Histoire persistante
Par défaut, l'historique des entrées utilisateur dans IEx
ne persiste pas dans les différentes sessions.
erlang-history
ajoute le support de l'historique à la fois au shell Erlang et à IEx
:
git clone [email protected]:ferd/erlang-history.git
cd erlang-history
sudo make install
Vous pouvez maintenant accéder à vos entrées précédentes à l'aide des flèches haut et bas, même sur différentes sessions IEx
.
Quand la console Elixir est bloquée ...
Parfois, vous risquez de lancer accidentellement quelque chose dans le shell qui finit par attendre pour toujours, bloquant ainsi le shell:
iex(2)> receive do _ -> :stuck end
Dans ce cas, appuyez sur Ctrl-g. Tu verras:
User switch command
Entrez ces commandes dans l'ordre:
-
k
(pour tuer le processus shell) -
s
(pour démarrer un nouveau processus shell) -
c
(pour se connecter au nouveau processus shell)
Vous allez vous retrouver dans une nouvelle coque Erlang:
Eshell V8.0.2 (abort with ^G)
1>
Pour démarrer un shell Elixir, tapez:
'Elixir.IEx.CLI':local_start().
(n'oubliez pas le dernier point!)
Ensuite, vous verrez apparaître un nouveau processus 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)>
Pour échapper au mode "en attente de plus d'entrées" (dû à des guillemets non #iex:break
, des crochets, etc.), tapez #iex:break
, suivi d'un retour chariot ( ⏎ ):
iex(1)> "Hello, "world"
...(1)>
...(1)> #iex:break
** (TokenMissingError) iex:1: incomplete expression
iex(1)>
Ce qui précède est particulièrement utile lorsque le copier-coller d'un fragment de code relativement volumineux transforme la console en mode «attente d'une entrée supplémentaire».
sortir de l'expression incomplète
Lorsque vous avez entré quelque chose dans IEx qui attend une complétion, telle qu'une chaîne multiligne, IEx changera l'invite pour indiquer qu'elle attend que vous finissiez en changeant l'invite pour avoir des points de suspension ( ...
) plutôt que iex
.
Si vous trouvez que IEx attend que vous finissiez une expression mais que vous ne savez pas exactement ce qu'il faut pour terminer l'expression ou que vous souhaitiez simplement abandonner cette ligne d'entrée, entrez #iex:break
comme entrée de la console. Cela entraînera IEx à lancer une TokenMissingError
et à annuler l'attente d'une entrée supplémentaire, vous ramenant ainsi à une entrée de console standard "de niveau supérieur".
iex:1> "foo"
"foo"
iex:2> "bar
...:2> #iex:break
** (TokenMissingError) iex:2: incomplete expression
Plus d'informations sont disponibles dans la documentation IEx .
Charger un module ou un script dans la session IEx
Si vous avez un fichier d'élixir; un script ou un module et que vous souhaitez le charger dans la session IEx en cours, vous pouvez utiliser la méthode c/1
:
iex(1)> c "lib/utils.ex"
iex(2)> Utils.some_method
Cela compilera et chargera le module dans IEx, et vous pourrez appeler toutes ses méthodes publiques.
Pour les scripts, il exécutera immédiatement le contenu du script:
iex(3)> c "/path/to/my/script.exs"
Called from within the script!