Elixir 由于长生不老药制造透析器中的默认参数而导致的功能性
我有一个带有两个默认参数的函数Elixir 由于长生不老药制造透析器中的默认参数而导致的功能性,elixir,dialyzer,Elixir,Dialyzer,我有一个带有两个默认参数的函数 defpfoo(bar,baz,qux\\”,garply\\nil) 我有两个用法,一个只提供前两个参数,另一个全部4个参数。透析器抱怨永远不会调用函数foo/3。我假设这是因为它是私有的,两个默认值允许展开节点/2,展开节点/3,和展开节点/4。表面上,我可以放弃默认值,并在当前的foo/2调用中提供它们,但仅仅安抚透析器似乎很愚蠢。有没有办法在规范中指定这一点?您可以使用@dialyzer属性抑制透析器警告: @dialyzer {:no_unused, [
defpfoo(bar,baz,qux\\”,garply\\nil)
我有两个用法,一个只提供前两个参数,另一个全部4个参数。透析器抱怨永远不会调用
函数foo/3
。我假设这是因为它是私有的,两个默认值允许展开节点/2
,展开节点/3
,和展开节点/4
。表面上,我可以放弃默认值,并在当前的foo/2
调用中提供它们,但仅仅安抚透析器似乎很愚蠢。有没有办法在规范中指定这一点?您可以使用@dialyzer
属性抑制透析器警告:
@dialyzer {:no_unused, [foo: 3]}
列出了所有可能的选项。这是否意味着没有更好的方法来指定typespec?这真的是一个错误的警告吗?或者这是一种异味?我猜这是一种长生不老药的组合,总是产生所有的中间头。另一种方法是通过单独的函数调用“手动”定义默认值。那么您将只有/2和/4版本,而没有/3版本。