@spec another(String.t, String.t) :: String.t
def another(_para1, _para2) do
IO.puts "this is a test"
end
我可以用这种方式定义函数的参数类型,即使参数没有在函数体中使用吗?
答案 0 :(得分:1)
是的,你可以做到这一点,它在语法上是有效的。 @spec
属性应包含在一个地方收集的所有预期输入和输出。在这种情况下,你要对dialyzer
(并且隐含地向代码的读者)说这个函数只接受字符串。
问题是你想要这样做的原因?如果您不需要这些参数,为什么要接受它们?如果它是你的最后一个子句,一切都没问题,因为你对该函数有其他定义而且它们只接受字符串,所以@spec
是有效的。
答案 1 :(得分:0)
如果允许任何参数,则可以在定义中使用类型any()
@spec another(any(), any()) :: String.t