【发布时间】:2022-02-16 15:41:09
【问题描述】:
我如何为函数编写类型规范,比如说,一个具有默认值的参数?类似于以下内容:
def foo(bar \\ 10) do
bar
end
会是这样吗:
@spec foo(integer) :: integer
或者会是什么?
谢谢。
【问题讨论】:
标签: elixir
我如何为函数编写类型规范,比如说,一个具有默认值的参数?类似于以下内容:
def foo(bar \\ 10) do
bar
end
会是这样吗:
@spec foo(integer) :: integer
或者会是什么?
谢谢。
【问题讨论】:
标签: elixir
是的。
我要补充一点,如果您的问题是函数的类型规范是否存在差异,该函数的参数具有默认值,而参数不具有默认值,那么没有区别。
【讨论】:
它按预期工作,因为您实际上定义了两个函数。
@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。
【讨论】: