调试 Elixir 流
Debugging Elixir streams
我是 Elixir 的新手,我想学习如何更好地调试 Streams。
在我工作的地方对大型数据集执行操作很常见。这意味着在最后的操作之前,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()
查看结果很难调试,特别是如果 Enum.sum()
returns 没有值或 0。
有什么建议吗? And the debugger is currently unavailable to me.
从将 IO.inspect/2
连接到您的管道开始就足够了吗?
即:
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()
我是 Elixir 的新手,我想学习如何更好地调试 Streams。
在我工作的地方对大型数据集执行操作很常见。这意味着在最后的操作之前,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()
查看结果很难调试,特别是如果 Enum.sum()
returns 没有值或 0。
有什么建议吗? And the debugger is currently unavailable to me.
从将 IO.inspect/2
连接到您的管道开始就足够了吗?
即:
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()