有没有办法迭代传递给Elixir中函数的所有参数?

Dan*_*l C 8 elixir

我知道可以将一个单独传递list给一个函数然后迭代它.但是,我更喜欢具有更明确签名的函数.所以我真正想知道的是Elixir是否有任何arguments与Javascript中的对象相同的东西.

据我所知,答案是否定的.我在讨论这个话题时最接近的是这个问题的答案.

我正在寻找这个功能的原因是,我有几次发现自己将相同的转换应用于多个参数,这有点单调乏味.这可能是通过宏实现的吗?

Chr*_*ord 15

这是可能的,但我很少使用它:

binding()在函数顶部调用将为您提供范围及其值的绑定的关键字列表,如果您将其作为函数的第一行调用,则它将是参数,即:

iex(6)> defmodule Mod do
...(6)>   def args(a, b, c) do
...(6)>     for {arg, val} <- binding() do
...(6)>       IO.puts "#{arg} = #{inspect val}"
...(6)>     end
...(6)>   end
...(6)> end


iex(7)> Mod.args(1,2,3)
a = 1
b = 2
c = 3
[:ok, :ok, :ok]
Run Code Online (Sandbox Code Playgroud)

  • 这有什么缺点吗?无论是风格还是实际?这似乎正是我想要的.这记录在哪里? (2认同)