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+ \
を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
がそれらを読み込みます。
alias App.{User, Repo}
永続的な歴史
デフォルトでは、 IEx
ユーザー入力履歴は異なるセッション間で保持されません。
erlang-history
はErlangシェルとIEx
両方に履歴サポートを追加します:
git clone [email protected]:ferd/erlang-history.git
cd erlang-history
sudo make install
IEx
異なるセッション間でも、上下の矢印キーを使用して以前の入力にアクセスできるようになりました。
エリクシールのコンソールがついているとき...
場合によっては、間違ってシェル内で何かを実行して、永遠に待ってシェルをブロックすることもあります。
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:break
と入力します。これにより、 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!