Elixir Language
IEx-console Tips en trucs
Zoeken…
Project hercompileren met `hercompileren`
iex(1)> recompile
Compiling 1 file (.ex)
:ok
Zie documentatie met `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
Krijg waarde van laatste opdracht met `v`
iex(1)> 1 + 1
2
iex(2)> v
2
iex(3)> 1 + v
3
Zie ook: Krijg de waarde van een rij met `v`
Krijg de waarde van een vorige opdracht met `v`
iex(1)> a = 10
10
iex(2)> b = 20
20
iex(3)> a + b
30
U kunt een specifieke rij krijgen die de index van de rij passeert:
iex(4)> v(3)
30
U kunt ook een index opgeven ten opzichte van de huidige rij:
iex(5)> v(-1) # Retrieves value of row (5-1) -> 4
30
iex(6)> v(-5) # Retrieves value of row (5-4) -> 1
10
De waarde kan worden hergebruikt in andere berekeningen:
iex(7)> v(2) * 4
80
Als u een niet-bestaande rij IEx
, geeft IEx
een foutmelding:
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
IEx-console afsluiten
- Gebruik Ctrl + C, Ctrl + C om af te sluiten
iex(1)>
BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
(v)ersion (k)ill (D)b-tables (d)istribution
- Gebruik
Ctrl+ \
om onmiddellijk af te sluiten
Zie informatie met `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
PID aanmaken
Dit is handig wanneer u de PID van een vorige opdracht niet hebt opgeslagen
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>
Houd uw aliassen bij de hand wanneer u IEx start
Als u uw veelgebruikte aliassen in een .iex.exs
bestand in de hoofdmap van uw app plaatst, laadt IEx ze voor u bij het opstarten.
alias App.{User, Repo}
Aanhoudende geschiedenis
Standaard is de geschiedenis van gebruikersinvoer in IEx
niet beschikbaar voor verschillende sessies.
erlang-history
voegt geschiedenisondersteuning toe aan zowel de Erlang-shell als IEx
:
git clone [email protected]:ferd/erlang-history.git
cd erlang-history
sudo make install
U hebt nu toegang tot uw vorige invoer met behulp van de pijltoetsen omhoog en omlaag, zelfs tijdens verschillende IEx
sessies.
Als de Elixir-console vastzit ...
Soms kun je per ongeluk iets in de shell laten lopen dat uiteindelijk voor altijd wacht en daarmee de shell blokkeert:
iex(2)> receive do _ -> :stuck end
Druk in dat geval op Ctrl-g. Je zult het zien:
User switch command
Voer deze opdrachten in volgorde in:
-
k
(om het shell-proces te doden) -
s
(om een nieuw shell-proces te starten) -
c
(om verbinding te maken met het nieuwe shell-proces)
Je komt terecht in een nieuwe Erlang-shell:
Eshell V8.0.2 (abort with ^G)
1>
Typ het volgende om een Elixir-shell te starten:
'Elixir.IEx.CLI':local_start().
(vergeet de laatste punt niet!)
Dan zie je een nieuw Elixir shell-proces aankomen:
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)>
Om te ontsnappen uit de modus "in afwachting van meer invoer" (vanwege niet-gesloten aanhalingsteken, haakje, enz.), Type #iex:break
, gevolgd door terugloop van de regel ( ⏎ ):
iex(1)> "Hello, "world"
...(1)>
...(1)> #iex:break
** (TokenMissingError) iex:1: incomplete expression
iex(1)>
het bovenstaande is met name handig wanneer bij het kopiëren en plakken van een relatief groot fragment de console in de modus "In afwachting van meer invoer" wordt gezet.
uitbreken van onvolledige uitdrukking
Wanneer u iets in IEx hebt ingevoerd dat een voltooiing verwacht, zoals een tekenreeks met meerdere regels, wijzigt IEx de prompt om aan te geven dat het op u wacht door de prompt te wijzigen in een ellips ( ...
) in plaats van iex
.
Als u merkt dat IEx op u wacht om een uitdrukking af te maken, maar u weet niet zeker wat het nodig heeft om de uitdrukking te beëindigen, of wilt u gewoon deze invoerregel afbreken, voer dan #iex:break
als console-invoer. Dit zal ertoe leiden dat IEx een TokenMissingError
en het wachten op meer invoer annuleert, waardoor u terugkeert naar een standaard "topniveau" console-invoer.
iex:1> "foo"
"foo"
iex:2> "bar
...:2> #iex:break
** (TokenMissingError) iex:2: incomplete expression
Meer informatie is beschikbaar in de IEx-documentatie .
Laad een module of script in de IEx-sessie
Als u een elixerbestand hebt; een script of een module en deze in de huidige IEx-sessie wilt laden, kunt u de c/1
methode gebruiken:
iex(1)> c "lib/utils.ex"
iex(2)> Utils.some_method
Hiermee wordt de module in IEx gecompileerd en geladen, en kun je alle openbare methoden aanroepen.
Voor scripts zal het onmiddellijk de inhoud van het script uitvoeren:
iex(3)> c "/path/to/my/script.exs"
Called from within the script!