我是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()查看结果很难进行调试,特别是在Enum.sum()没有返回值或返回值为0的情况下。
发布于 2021-05-21 18:20:49
从将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()https://stackoverflow.com/questions/67625607
复制相似问题