Elixir Language
Tips och tricks för IEx-konsol
Sök…
Återkompilera projektet med "rekompilera"
iex(1)> recompile
Compiling 1 file (.ex)
:ok
Se dokumentation med `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
Få värde från sista kommando med `v`
iex(1)> 1 + 1
2
iex(2)> v
2
iex(3)> 1 + v
3
Se också: Få värdet på en rad med `v`
Få värdet på ett tidigare kommando med `v`
iex(1)> a = 10
10
iex(2)> b = 20
20
iex(3)> a + b
30
Du kan få en specifik rad som passerar radens index:
iex(4)> v(3)
30
Du kan också ange ett index i förhållande till den aktuella raden:
iex(5)> v(-1) # Retrieves value of row (5-1) -> 4
30
iex(6)> v(-5) # Retrieves value of row (5-4) -> 1
10
Värdet kan återanvändas i andra beräkningar:
iex(7)> v(2) * 4
80
Om du anger en icke-befintlig rad kommer IEx
att ta upp ett fel:
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
Avsluta IEx-konsolen
- Använd Ctrl + C, Ctrl + C för att avsluta
iex(1)>
BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
(v)ersion (k)ill (D)b-tables (d)istribution
- Använd
Ctrl+ \
att omedelbart avsluta
Se information med `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
Skapa PID
Detta är användbart när du inte lagrade PID från ett tidigare kommando
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>
Ha dina alias redo när du startar IEx
Om du lägger dina vanliga alias i en .iex.exs
fil i roten till din app kommer IEx att ladda dem åt dig vid start.
alias App.{User, Repo}
Ihållande historia
Som standard kvarstår användarinmatningshistorik i IEx
inte i olika sessioner.
erlang-history
ger både historiskt stöd till både Erlang-skalet och IEx
:
git clone [email protected]:ferd/erlang-history.git
cd erlang-history
sudo make install
Du kan nu komma åt dina tidigare ingångar med upp- och nedpiltangenterna, även över olika IEx
sessioner.
När Elixir-konsolen sitter fast ...
Ibland kan du av misstag köra något i skalet som slutar vänta för evigt och därmed blockera skalet:
iex(2)> receive do _ -> :stuck end
Tryck i så fall på Ctrl-g. Du kommer se:
User switch command
Ange dessa kommandon i ordning:
-
k
(för att döda skalprocessen) -
s
(för att starta en ny skalprocess) -
c
(för att ansluta till den nya skalprocessen)
Du hamnar i ett nytt Erlang-skal:
Eshell V8.0.2 (abort with ^G)
1>
Om du vill starta ett Elixir-skal skriver du:
'Elixir.IEx.CLI':local_start().
(glöm inte den sista punkten!)
Då ser du en ny Elixir-skalprocess:
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)>
För att fly från "väntar på mer-inmatning" -läget (på grund av otäckt citattecken, fäste osv.), #iex:break
, följt av vagnretur ( ⏎ ):
iex(1)> "Hello, "world"
...(1)>
...(1)> #iex:break
** (TokenMissingError) iex:1: incomplete expression
iex(1)>
ovanstående är speciellt användbart när kopiering och klistra in ett relativt stort utdrag vrider konsolen till "väntar på mer-ingång" -läget.
bryta sig ur ofullständigt uttryck
När du har skrivit in något i IEx som förväntar sig ett slutförande, till exempel en multiline sträng, kommer IEx att ändra prompten för att indikera att den väntar på att du är klar genom att ändra prompten till att ha en ellipsis ( ...
) snarare än iex
.
Om du upptäcker att IEx väntar på att du ska avsluta ett uttryck men du inte är säker på vad den behöver för att avsluta uttrycket, eller om du helt enkelt vill avbryta den här raden med inmatning anger du #iex:break
som konsolinmatning. Detta kommer att få IEx att kasta en TokenMissingError
och avbryta att vänta på någon mer ingång, vilket kommer att återgå till en standardkonsolingång på "toppnivå".
iex:1> "foo"
"foo"
iex:2> "bar
...:2> #iex:break
** (TokenMissingError) iex:2: incomplete expression
Mer information finns i IEx-dokumentationen .
Ladda en modul eller skript i IEx-sessionen
Om du har en elixir-fil; ett skript eller en modul och vill ladda det i den aktuella IEx-sessionen, kan du använda c/1
metoden:
iex(1)> c "lib/utils.ex"
iex(2)> Utils.some_method
Detta kommer att kompilera och ladda modulen i IEx, och du kan ringa alla dess offentliga metoder.
För skript kommer det omedelbart att köra innehållet i skriptet:
iex(3)> c "/path/to/my/script.exs"
Called from within the script!