Elixir Language
Wskazówki i porady dotyczące konsoli IEx
Szukaj…
Przekompiluj projekt za pomocą `recompile`
iex(1)> recompile
Compiling 1 file (.ex)
:ok
Zobacz dokumentację z `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
Uzyskaj wartość z ostatniego polecenia za pomocą `v`
iex(1)> 1 + 1
2
iex(2)> v
2
iex(3)> 1 + v
3
Zobacz także: Uzyskaj wartość wiersza za pomocą `v`
Uzyskaj wartość poprzedniego polecenia za pomocą `v`
iex(1)> a = 10
10
iex(2)> b = 20
20
iex(3)> a + b
30
Możesz uzyskać określony wiersz przekazujący indeks wiersza:
iex(4)> v(3)
30
Możesz także określić indeks względem bieżącego wiersza:
iex(5)> v(-1) # Retrieves value of row (5-1) -> 4
30
iex(6)> v(-5) # Retrieves value of row (5-4) -> 1
10
Wartość można ponownie wykorzystać w innych obliczeniach:
iex(7)> v(2) * 4
80
Jeśli określisz nieistniejący wiersz, IEx
zgłosi błąd:
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
Wyjdź z konsoli IEx
- Użyj Ctrl + C, Ctrl + C, aby wyjść
iex(1)>
BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
(v)ersion (k)ill (D)b-tables (d)istribution
- Użyj
Ctrl+ \
aby natychmiast wyjść
Zobacz informacje za pomocą `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
Tworzenie PID
Jest to przydatne, gdy nie zapisałeś PID z poprzedniego polecenia
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>
Przygotuj aliasy, gdy uruchomisz IEx
Jeśli umieścisz często używane aliasy w pliku .iex.exs
w katalogu głównym aplikacji, IEx załaduje je dla ciebie podczas uruchamiania.
alias App.{User, Repo}
Trwała historia
Domyślnie historia wprowadzania danych przez użytkownika w IEx
nie zachowuje się w różnych sesjach.
erlang-history
dodaje obsługę historii zarówno do powłoki Erlang, jak i IEx
:
git clone [email protected]:ferd/erlang-history.git
cd erlang-history
sudo make install
Możesz teraz uzyskać dostęp do swoich poprzednich danych wejściowych za pomocą klawiszy strzałek w górę i w dół, nawet w różnych sesjach IEx
.
Gdy konsola Elixir utknęła ...
Czasami możesz przypadkowo uruchomić coś w powłoce, co kończy się czekaniem na zawsze, blokując w ten sposób powłokę:
iex(2)> receive do _ -> :stuck end
W takim przypadku naciśnij Ctrl-g. Zobaczysz:
User switch command
Wprowadź te polecenia w kolejności:
-
k
(aby zabić proces powłoki) -
s
(aby rozpocząć nowy proces powłoki) -
c
(aby połączyć się z nowym procesem powłoki)
Skończysz w nowej powłoce Erlanga:
Eshell V8.0.2 (abort with ^G)
1>
Aby uruchomić powłokę Elixir, wpisz:
'Elixir.IEx.CLI':local_start().
(nie zapomnij ostatniej kropki!)
Następnie pojawi się nowy proces powłoki 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)>
Aby wyjść z trybu „oczekuje na więcej danych” (z powodu niezamkniętego cudzysłowu, nawiasu itp.), Wpisz #iex:break
, a następnie znak powrotu karetki ( ⏎ ):
iex(1)> "Hello, "world"
...(1)>
...(1)> #iex:break
** (TokenMissingError) iex:1: incomplete expression
iex(1)>
powyższe jest szczególnie przydatne, gdy kopiowanie i wklejanie stosunkowo dużego fragmentu zmienia konsolę w tryb „oczekiwania na więcej danych”.
wyrwać się z niepełnej ekspresji
Kiedy wpiszesz coś do IEx, które oczekuje zakończenia, np. Ciąg multilinii, IEx zmieni monit, aby wskazać, że czeka na zakończenie, zmieniając monit o elipsę ( ...
) zamiast iex
.
Jeśli okaże się, że IEx czeka na zakończenie wyrażenia, ale nie jesteś pewien, czego potrzebuje, aby zakończyć wyrażenie, lub po prostu chcesz przerwać ten wiersz wprowadzania, wpisz #iex:break
jako wejście konsoli. Spowoduje to, że IEx zgłosi błąd TokenMissingError
i anuluje oczekiwanie na dalsze dane wejściowe, co spowoduje powrót do standardowego wejścia konsoli „najwyższego poziomu”.
iex:1> "foo"
"foo"
iex:2> "bar
...:2> #iex:break
** (TokenMissingError) iex:2: incomplete expression
Więcej informacji jest dostępnych w dokumentacji IEx .
Załaduj moduł lub skrypt do sesji IEx
Jeśli masz plik eliksiru; skrypt lub moduł i chcesz załadować go do bieżącej sesji IEx, możesz użyć metody c/1
:
iex(1)> c "lib/utils.ex"
iex(2)> Utils.some_method
Spowoduje to skompilowanie i załadowanie modułu w IEx, a ty będziesz mógł wywoływać wszystkie jego metody publiczne.
W przypadku skryptów natychmiast wykona zawartość skryptu:
iex(3)> c "/path/to/my/script.exs"
Called from within the script!