[英]elixir function taking a parameter with do
我试图全神贯注于 Elixir 并且对以下内容感到困惑
def fun_myfunc(clause, do: expression) do
具体来说,我对do: expression
部分有点困惑。 这是传递给函数的参数吗,还有为什么有一个:
。 do
是这个上下文中的关键字吗?
这也引发了以下关于Phoenix
的问题。 如果我查看管道函数https://hexdocs.pm/phoenix/Phoenix.Router.html#pipeline/2我会看到以下签名pipeline(plug, list)
。 什么是list
在这种情况下以及我如何通过查看文档来推断它。 我知道他们已经给出了list
看起来像一堆表达式的示例,但是我如何通过查看文档来收集它。
do: expression
是一个关键字列表。 这是两种形式的语法糖:
[]
key: value
而不是等效的{:key, :value}
这两个都记录在上面的链接中。
该函数等效于:
def fun_myfunc(clause, [{:do, expression}]) do
:do
只是一个原子。 由fun_myfunc
决定如何处理它。
我怀疑您实际上是在查看用defmacro
定义的宏,并在您的问题中错误地引用了它。 例如,这也是if
宏的工作方式。
if foo do bar else baz
相当于if(foo, do: bar, else: baz)
,相当于if(foo, [{:do, bar}, {:else, baz}])
。
至于凤凰部分,那应该是一个单独的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.