Elixir Language
Советы и рекомендации консоли IEx
Поиск…
Перекомпилировать проект с `перекомпилировать`
iex(1)> recompile
Compiling 1 file (.ex)
:ok
См. Документацию с буквой `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
Получить значение из последней команды с помощью `v`
iex(1)> 1 + 1
2
iex(2)> v
2
iex(3)> 1 + v
3
См. Также: Получить значение строки с `v`
Получить значение предыдущей команды с помощью `v`
iex(1)> a = 10
10
iex(2)> b = 20
20
iex(3)> a + b
30
Вы можете получить определенную строку, передающую индекс строки:
iex(4)> v(3)
30
Вы также можете указать индекс относительно текущей строки:
iex(5)> v(-1) # Retrieves value of row (5-1) -> 4
30
iex(6)> v(-5) # Retrieves value of row (5-4) -> 1
10
Значение может быть повторно использовано в других расчетах:
iex(7)> v(2) * 4
80
Если вы укажете несуществующую строку, IEx
вызовет ошибку:
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
- Используйте Ctrl + C, Ctrl + C для выхода
iex(1)>
BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
(v)ersion (k)ill (D)b-tables (d)istribution
- Используйте
Ctrl+ \
для немедленного выхода
См. Информацию с `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
Это полезно, если вы не сохранили PID из предыдущей команды
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>
Подготовьте свои псевдонимы при запуске IEx
Если вы .iex.exs
ваши обычно используемые псевдонимы в файл .iex.exs
в корне вашего приложения, IEx загрузит их для вас при запуске.
alias App.{User, Repo}
Постоянная история
По умолчанию история ввода пользователя в IEx
не сохраняется в разных сеансах.
erlang-history
добавляет поддержку истории как для оболочки Erlang, так и для IEx
:
git clone [email protected]:ferd/erlang-history.git
cd erlang-history
sudo make install
Теперь вы можете получить доступ к своим предыдущим входам, используя клавиши со стрелками вверх и вниз, даже в разных сеансах IEx
.
Когда консоль Elixir застряла ...
Иногда вы можете случайно запустить что-то в оболочке, которая заканчивается навсегда, и, таким образом, блокирует оболочку:
iex(2)> receive do _ -> :stuck end
В этом случае нажмите Ctrl-g. Вот увидишь:
User switch command
Введите следующие команды:
-
k
(для уничтожения процесса оболочки) -
s
(для запуска нового процесса оболочки) -
c
(для подключения к новому процессу оболочки)
Вы попадете в новую оболочку Erlang:
Eshell V8.0.2 (abort with ^G)
1>
Чтобы запустить оболочку Elixir, введите:
'Elixir.IEx.CLI':local_start().
(не забудьте последнюю точку!)
Затем вы увидите новый процесс оболочки 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)>
Чтобы выйти из режима «ожидание для большего ввода» (из-за незамкнутой кавычки, скобки и т. Д.), #iex:break
, а затем возврат каретки ( ⏎ ):
iex(1)> "Hello, "world"
...(1)>
...(1)> #iex:break
** (TokenMissingError) iex:1: incomplete expression
iex(1)>
вышеописанное особенно полезно, когда копирование в относительно огромный фрагмент превращает консоль в режим ожидания для большего ввода.
вырваться из неполного выражения
Когда вы введете что-то в IEx, который ожидает завершения, например многострочную строку, IEx изменит приглашение, чтобы указать, что он ждет вас, закончив, изменив приглашение на наличие многоточия ( ...
), а не iex
.
Если вы обнаружите, что IEx ждет вас, чтобы завершить выражение, но вы не знаете, что ему нужно для завершения выражения, или вы просто хотите прервать эту строку ввода, введите #iex:break
в качестве входа в консоль. Это заставит IEx выкинуть TokenMissingError
и отменить ожидание ввода большего количества, возвращая вас к стандартным TokenMissingError
консоли верхнего уровня.
iex:1> "foo"
"foo"
iex:2> "bar
...:2> #iex:break
** (TokenMissingError) iex:2: incomplete expression
Дополнительная информация доступна в документации IEx .
Загрузите модуль или скрипт в сеанс IEx
Если у вас есть файл эликсира; сценарий или модуль и хотите загрузить его в текущий сеанс IEx, вы можете использовать метод c/1
:
iex(1)> c "lib/utils.ex"
iex(2)> Utils.some_method
Это скомпилирует и загрузит модуль в IEx, и вы сможете вызвать все его общедоступные методы.
Для скриптов он немедленно выполнит содержимое скрипта:
iex(3)> c "/path/to/my/script.exs"
Called from within the script!