環境
- Elixir 1.x
コード
Elixirのパイプ演算子便利なんだけど、途中の変数変化を把握しづらい。そこでpryを使ってブレークポイントを仕掛ける。
defmodule Example do def pipe do 1..10 |> Enum.map(&(&1 * &1)) |> Enum.filter(&rem(&1, 2) == 0) |> (fn(x) -> IEx.pry;x end).() |> Enum.take(3) end end
実行
iex(1)> c "index.ex" warning: redefining module Example (current version defined in memory) index.ex:10 [Example] iex(2)> Example.pipe Break reached: Example.pipe/0 (index.ex:15) 13: |> Enum.map(&(&1 * &1)) 14: |> Enum.filter(&rem(&1, 2) == 0) 15: |> (fn(x) -> IEx.pry;x end).() 16: |> Enum.take(3) 17: end pry(1)> x [4, 16, 36, 64, 100] pry(2)> respawn Interactive Elixir (1.6.6) - press Ctrl+C to exit (type h() ENTER for help) [4, 16, 36]
パイプ演算子中ではない場合
require IEx; defmodule Example do def add(x, y) do IEx.pry x + y end end