如何为接受一个具有默认值的参数的函数编写类型规范?如下所示:
def foo(bar \\ 10) do
bar
end
会是这样的:
@spec foo(integer) :: integer
或者会是什么?
谢谢。
答案 0 :(得分:9)
是
我想补充一点,如果你的问题是如果一个函数的typespec与一个参数有一个默认值和一个没有参数的参数之间存在差异,那么没有差别。
答案 1 :(得分:0)
它按预期工作,因为您实际上定义了两个函数。
@spec foo(integer) :: integer
def foo(bar \\ 10) do
bar
end
等效于:
def foo() do
foo(10)
end
@spec foo(integer) :: integer
def foo(bar) do
bar
end
因此,您基本上可以得到两个函数,但是其中只有一个具有@spec
。