我有一个列表,我想根据从结构类型 B 到 A 的转换来分块。例如,我有以下内容:
iex(1)> defmodule A, do: defstruct []
{:module, A ...
iex(2)> defmodule B, do: defstruct []
{:module, B ...
iex(3)> values = [ %A{}, %A{}, %B{}, %B{}, %B{}, %A{}, %A{}, %B{} ]
[%A{}, %A{}, %B{}, %B{}, %B{}, %A{}, %A{}, %B{}]
我希望将这些数据分成一个 2 元素列表,其中包含:
[ [ %A{}, %A{}, %B{}, %B{}, %B{} ], [ %A{}, %A{}, %B{} ] ]
如果输入最初全部是 A 或全部 B,则输出将保持不变,因为没有发生 B->A 转换。
我想Enum.chunk_by/2
是要走的路,但我很难弄清楚如何维护前一个元素的上下文以知道何时拆分。
像这样的事情的惯用解决方案是什么样的?