2
我一直在elixir中使用“do/end”符号,或者像命令块分隔符那样。 (换句话说,do
类似于C语言的{
,end
就像}
)。Elixir和Haskell中的“Do”符号
这是发生了什么事情的准确描述?还是更像Haskell do
表示法,它构造了monad的语法糖,允许编写命令式编码?
我一直在elixir中使用“do/end”符号,或者像命令块分隔符那样。 (换句话说,do
类似于C语言的{
,end
就像}
)。Elixir和Haskell中的“Do”符号
这是发生了什么事情的准确描述?还是更像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 predicate do
a = foo()
bar(a)
end
if predicate, do: (
a = foo()
bar(a)
)
这与定义函数是一样的。 def/2
宏也使用关键字列表。这意味着你可以这样定义如下
def foo, do: 5
您可以阅读getting started指南详细了解此功能。