gpt4 book ai didi

elixir - 这个表达式链可以不用括号重写吗?

转载 作者:行者123 更新时间:2023-12-01 10:49:18 28 4
gpt4 key购买 nike

所以我在 Elixir 中使用流,我也在使用 |> 运算符;我有很多使用 F# 的经验,所以感觉很自然。所以我尝试了这个:

1..10 |> Stream.map &(&1 * &1) |> Enum.to_list

只是吐出前十个方 block 的列表。但它没有用。没问题;只是似乎是运算符优先级的问题,因为它工作正常:

(1..10 |> Stream.map &(&1 * &1)) |> Enum.to_list

但我想知道是否可以重写而不必在表达式的前半部分加上括号。

最佳答案

我认为您的问题在于您在调用 Stream.map 时不带括号,然后尝试通过管道传输。我必须承认,我不确定机制,但您原来的电话似乎被解释为:

1..10 |> Stream.map(&(&1 * &1) |> Enum.to_list)

我会重写它以在函数调用中使用括号:

1..10 |> Stream.map(&(&1 * &1)) |> Enum.to_list

就个人而言,我主要在函数调用中使用括号。异常(exception)情况是零参数函数调用、宏调用和偶尔的 IO.puts/inspect 调用(我通常这样做只是为了调试目的)。

我发现这种方法非常有用,尤其是在管道传输时,因为它消除了可能的歧义。

关于elixir - 这个表达式链可以不用括号重写吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22391602/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com