はじめに
iexって何気なくつかってるんですが、Elixirの関数を試しに実行してみるとかくらいしか使ってませんでした。
マニュアルみてみたら、知らない機能もあったので、探索してみました。
i/1
引数に渡した値の情報を表示。protocolsが出るのはいいかも。
iex(10)> i([1,2,3])
Term
[1, 2, 3]
Data type
List
Reference modules
List
Implemented protocols
Collectable, Enumerable, IEx.Info, Inspect, List.Chars, String.Chars
i/0
タプルって、Enumerableじゃないんですよね。
iex(12)> {1,2,3}
{1, 2, 3}
iex(13)> i
Term
{1, 2, 3}
Data type
Tuple
Reference modules
Tuple
Implemented protocols
IEx.Info, Inspect
iex(14)>
open
openコマンドで、エディターを開けるらしいのでやってみます。
まず環境変数で開くエディターをセットする(VSCodeを開く場合の例)
ELIXIR_EDITOR="code --goto"
open(開きたいモジュール名)を実行
iex(2)> ls
elixir101.ex user.ex
iex(3)> open(User)
iex(4)>
VSCodeが開きました。
.exのファイル名を指定するのではなく、モジュールで開けるところが面白いです。
recompile
これは、たまに使います。
ソースを変更した時に、recompileを実行した時に実行中のiexに反映するときに使います。
iex(4)> recompile
Generated elixir101 app
:ok
iex(5)>
runtime_info
あまり使う事ないかもしれないけど、試してみました。
いろいろな情報が表示されます。
iex(5)> runtime_info
## System and architecture
Elixir version: 1.14.4
Erlang/OTP version: 25
ERTS version: 13.2.2
Compiled for: x86_64-pc-linux-gnu
Schedulers: 8
Schedulers online: 8
## Memory
Total: 28 MB
Atoms: 576 KB
Binaries: 43 KB
Code: 13 MB
ETS: 904 KB
Processes: 5 MB
## Statistics / limits
Uptime: 7 minutes and 23 seconds
Run queue: 1
Atoms: 19921 / 1048576 (1% used)
ETS: 28 / 8192 (0% used)
Ports: 3 / 65536 (0% used)
Processes: 66 / 262144 (0% used)
Showing topics: [:system, :memory, :limits]
Additional topics: [:applications]
To view a specific topic call runtime_info(topic)
iex(6)>
v/0 v/1
引数の値のヒストリーの値を返します。値を再利用するとき便利です。
v()だと直前の値になります。
知ってると何か使えそう。
iex(6)> [1,2,3]
[1, 2, 3]
iex(7)> {10,20,30}
{10, 20, 30}
iex(8)> v(6)|> IO.inspect()
[1, 2, 3]
[1, 2, 3]
iex(9)> v(7)|> IO.inspect()
{10, 20, 30}
{10, 20, 30}
break!
ブレークポイントを設定して実行して、実行中の状態を確認する事ができます。
Userモジュールのprint関数で止めてみて、userの値を表示してみました。
いろいろあるので皆さんもみてみてください。