在 Elixir 中,我有以下列表:
[ :juridical_person_document, [re_developments: [[properties: [[re_development: [:re_developer]]]]]], :legal_address ]
我想要的输出是这样的:
[ :juridical_person_document, re_developments: [properties: [re_development: [:re_developer]]], :legal_address ]
换句话说,我想去掉不必要的方括号。我怎样才能做到这一点?
我知道这可以通过递归来实现,但我还不知道如何实现。
Macro.postwalk/2
就可以在这里工作了。
Macro.postwalk(input, fn [[x]] -> [x]; x -> x end)
[
:juridical_person_document,
[re_developments: [properties: [re_development: [:re_developer]]]],
:legal_address
]
这个 hack 使用了这样一个事实:列表、原子和大小为 2 的元组都是有效的 AST。