Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir中是否有一个工具可以显示表达式计算方式的分解?_Elixir - Fatal编程技术网

Elixir中是否有一个工具可以显示表达式计算方式的分解?

Elixir中是否有一个工具可以显示表达式计算方式的分解?,elixir,Elixir,我有一句话来自这个问题-。 Elixir中是否有一个工具可以显示其计算方式的分解?由于您面临的主要问题似乎是在复杂表达式中识别无括号函数调用的参数,因此您可以将字符串解析为Elixir AST(code.string_to_quoted!/1)和back(Macro.to_string/1),这将在有函数调用的地方添加显式括号 iex(1)> "a B.c |> D.e + f g h + i" |> Code.string_to_quoted! |> Macro.to

我有一句话来自这个问题-。


Elixir中是否有一个工具可以显示其计算方式的分解?

由于您面临的主要问题似乎是在复杂表达式中识别无括号函数调用的参数,因此您可以将字符串解析为Elixir AST(
code.string_to_quoted!/1
)和back(
Macro.to_string/1
),这将在有函数调用的地方添加显式括号

iex(1)> "a B.c |> D.e + f g h + i" |> Code.string_to_quoted! |> Macro.to_string
"a(B.c() |> D.e() + f(g(h + i)))"

我想你最好像我在年做的那样把它重构成多行。在列表中间,长的管道式表达式确实是很难理解的。对于这些列表处理函数,我是新手,并且在每天使用时都会避免这种代码。更重要的是要理解这些长生不老药短语是如何构造的,以便为我将来阅读Haskell做准备;)。无论如何,我应该将第二个流水线命令放在单独的一行上,现在我已经这样做了。我仍然需要一个工具来向我展示这些表达式是如何分离和执行的。与其他语言相比,没有使用括号来描述表达式的各种元素给我带来了困难。查看带有显式括号的代码的一种方法是对其进行解析和字符串化:
“a B.c |>D.e+f g h+i”|>Code.string_to_quoted!|>Macro.to_string|=>“a(B.c()|>D.e()+f(g(h+i))”
iex(1)> "a B.c |> D.e + f g h + i" |> Code.string_to_quoted! |> Macro.to_string
"a(B.c() |> D.e() + f(g(h + i)))"