我是 Elixir 的新手,我想学习如何更好地调试Streams。
在我的工作中,对大型数据集执行操作是很常见的。这意味着在最终操作(通常是Enum.sum()
.
但不幸的是,这意味着几个调用看起来难以辨认,因为它们由几个未记录的函数组成Stream.map
。(我们目前正在解决的问题)。我想查看数据从一个流传递到另一个流时的状态以进行调试。这通常是如何实现的?
例子:
SomeModule.some_large_call_that_returns_a_stream()
|> Stream.map(some_huge_hard_to_read_thing)
|> Stream.map(some_huge_hard_to_read_thing)
|> Stream.map(some_huge_hard_to_read_thing)
|> Enum.sum()
Run Code Online (Sandbox Code Playgroud)
查看结果很难进行调试,尤其是在Enum.sum()
返回无值或返回 0 的情况下。
有什么建议么?而且调试器目前对我来说不可用。
IO.inspect/2
从连接到管道开始就足够了吗?IE:
SomeModule.some_large_call_that_returns_a_stream()
|> Stream.map(some_huge_hard_to_read_thing)
|> Stream.map(some_huge_hard_to_read_thing)
|> Stream.map(&IO.inspect/1)
|> Stream.map(some_huge_hard_to_read_thing)
|> Enum.sum()
Run Code Online (Sandbox Code Playgroud)