gpt4 book ai didi

elixir - Elixir 和 Haskell 中的 "Do"符号

转载 作者:行者123 更新时间:2023-12-04 20:48:43 26 4
gpt4 key购买 nike

我一直在 Elixir 中使用“do/end”表示法,或多或少像命令式 block 分隔符。 (换句话说,do 类似于 C 语言中的 {end 类似于 } )。

这是对正在发生的事情的准确描述吗?还是更像 Haskell do表示法,它为允许类似命令式编码的 monad 构造语法糖?

最佳答案

是和不是。 do/end是关键字列表的语法便利。

你可能以前写过 if 表达式。有人可能期望看到的是

if predicate do
true_branch
else
false_branch
end

这也可以使用关键字列表来编写。以下是完全相同的。
if predicate, do: true_branch, else: false_branch

使用 do/ end表示法允许我们在编写代码块时消除冗长。以下两个 if 表达式是等价的
if predicate do
a = foo()
bar(a)
end

if predicate, do: (
a = foo()
bar(a)
)

这与定义函数相同。 def/2 宏也使用关键字列表。这意味着您可以定义如下函数
def foo, do: 5

您可以在 getting started 中了解更多信息。指导。

关于elixir - Elixir 和 Haskell 中的 "Do"符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43946511/

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