【发布时间】:2018-06-07 11:08:57
【问题描述】:
我想知道为什么我们在使用管道运算符时需要添加.(),如果函数没有被调用并且只接收一个参数?
id = &(&1)
"Hello" |> id.() |> upcase # HELLO
预期:
id = &(&1)
"Hello" |> id. |> upcase # "undefined function String.upcase/0"
为什么它不起作用?我想解释一下 Elixir 的行为方式。
【问题讨论】:
-
我意识到英语可能不是您的第一语言,但我没有关注您问题的“预期”部分。当您调用
id.时,您期待“未定义的函数 String.upcase/0”? -
顺便说一句,@JoseValim 很好地解释了为什么我们有时需要括号。你可能想看看这个Q & A
-
谢谢,@OnorioCatenacci。我只是不明白为什么
id.无效,我们需要“调用它”:id.()。我来自 JS 背景,当我们调用像id()这样的函数时,该函数正在执行。我希望这是有道理的。
标签: elixir