如何定义具有未使用参数的elixir函数的规范?

时间:2017-11-20 13:24:59

标签: elixir

@spec another(String.t, String.t) :: String.t 
def another(_para1, _para2) do
  IO.puts "this is a test"
end

我可以用这种方式定义函数的参数类型,即使参数没有在函数体中使用吗?

2 个答案:

答案 0 :(得分:1)

是的,你可以做到这一点,它在语法上是有效的。 @spec属性应包含在一个地方收集的所有预期输入和输出。在这种情况下,你要对dialyzer(并且隐含地向代码的读者)说这个函数只接受字符串。

问题是你想要这样做的原因?如果您不需要这些参数,为什么要接受它们?如果它是你的最后一个子句,一切都没问题,因为你对该函数有其他定义而且它们只接受字符串,所以@spec是有效的。

答案 1 :(得分:0)

如果允许任何参数,则可以在定义中使用类型any()

@spec another(any(), any()) :: String.t