在 Elixir 中,如何修复嵌套列表

问题描述 投票:0回答:1

在 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 ]

换句话说,我想去掉不必要的方括号。我怎样才能做到这一点?

我知道这可以通过递归来实现,但我还不知道如何实现。

elixir
1个回答
0
投票

突然之间,

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。

© www.soinside.com 2019 - 2024. All rights reserved.